全文共3114字,预计学习时长14分钟

图源:unsplash

将数据转换为可视化图表是门学问。本文介绍了能从经典的《定量信息的视觉展示》(Edward Tufte)中学到的大部分知识,并向你展示以及如何在Python中实现它。

信息展示的支柱

图表的完整性

这代表演示的真实性。通过确保正确缩放坐标轴并反映趋势,可以如实地解释数据。从长远来看,真实总是更有价值。每个人都至少目睹过一个带有非线性y轴的图,以使假设看起来更有说服力——请发誓永远不会这样做。

图表的卓越性

这代表演示的质量。通过删除多余的形状、分散的颜色和不一致的字体,可以更好地查看数据。根据我(以及Edward Tufte)的经验,卓越的图表源于许多小变化累积出的优势。对图形的每一处着墨都是至关重要的。

本教程只有所需的少数几行代码,以便简洁真实地展示数据。

对于所有的数据科学家和信息学迷,《定量信息的视觉展示》绝对是一本咖啡桌书籍。在展示信息方面这本书是无可争议的王,而且趣味性十足。

我一直将书中概述的方法用于在机器人学和机器学习的研究论文中创建功能强大的图表。以下是几段摘录。

具有固有密度的散点图

穿过由线和标记绘制的离散对象的彩色轨

这篇文章目标有三:

1. 想要确保每个人都能理解使用默认绘图功能所犯的一些严重错误。

2. 将Plotly介绍给这些受众,使用数据并通过探究人工智能和数据领域的文章来进行自我提升。

3. 涵盖可视化理论的基础知识,以及足以使在拥挤数字领域中的工作吸引从业者眼球的先进技术。

本文包含的代码是对我的教程plot.py的摘录,我将对其进行扩展使得3d绘图,动画等的最佳实践也包含进来。对两个绘图工具Matplotlib和Plotly的使用将贯穿本教程。

Matplotlib的logo;Plotly的logo。

1. Matplotlib: 这一旧的绘图引擎驱动了众多先前的实验代码,其对工程师的支持已沦为过去。

2. Plotly:数据科学、数据分析以及我的职业生涯未来的绘图工具。

在整个过程中,plotly可以为用户提供更多的工具来保持图形的卓越和完整。

准备

这是将要构建的图表。有点杂乱,数据简单。

本文的末尾叙述了准备(导入和数据加载)的过程,大家可以按需复制。依赖的壁垒很低,因此可以轻松获得顶层绘图和安全的保存机制。更少的依赖意味着更多的人可以对工作进行分支,复制和构建。

· 数学和数据工具:numpy,pandas

· 系统工具:os,sys

· 易于开发的绘图工具:matplotlib,matplotlib.pyplot,plotly,plotly.graph_objects

初始化图表

创建新的数据可视化的第一步是让用户为失败做好准备。始终创建一个坐标轴或一个特定的图形对象。这样可以完全控制数据放置的位置和方式。

Plotly已经往前迈出了一步。存在子图时,Plotly图形是用每一行和每一列索引的,不像matplotlib必须跟踪坐标轴的列表(当n=1时,plt.subplots的调用会生效)。

###### Init plot / subplots ####### mplfig_mpl, ax = plt.subplots()# plotlyfig_plo = plotly.subplots.make_subplots(rows=1, cols=1)###### add data ######for i in range(0, 4):    # mpl    ax.plot(...)       # plotly    fig_plo.add_trace(go.Scatter(...))

删除多余的信息

无需使用网格线

数字化和纸质印刷中混乱的最终来源是网格线。即使以PDF格式呈现,网格线也不会看起来很棒(放大并查看网格线的样子),并且它们很少能帮助专注的读者进行理解。趋势能说明一切。

# mplax.grid(False)#plotlyfig.update_layout(xaxis_showgrid=False, yaxis_showgrid=False)

无用的多余框线

使用空白。在任何介质中,空间都是有限的。将数据装箱会占据页面上可用于展示数据的宝贵空间。右边和顶上的线应删除,但有时左边和底下的线很漂亮。

# mplax.spines['right'].set_visible(False)ax.spines['top'].set_visible(False)ax.set_xlabel("Year")ax.set_ylabel("Market Share (%)")# plotlyfig_plo.update_xaxes(title_text="Year", linecolor='black',                     row=1, col=1,zeroline=True,)fig_plo.update_yaxes(title_text="Market Share", linecolor='black',                     row=1, col=1,zeroline=True,)

控制图例

总会有快速阅读的读者在图表之间扫来扫去。因此要有一个图例来回答他们什么代表什么的问题。Plotly具有很棒的图例工具,例如分组,始终可见的隐藏项目以及显示所选图例条目子集的交互式图表。

让用户查看完整的数据,并通过交互式plotly仪表板查看他们想要的内容。

# mplax.legend()# plotlyfig_plo.update_layout(showlegend=True,)

一个plotly仪表板示例

一致的字体

字体大小很重要且应匹配所用媒介

字体经常被忽略。将带有Arial字体的字体放到带有Times字体的复杂报表中,总是看起来格格不入。缩放字体大小以(尽量)匹配文本并始终统一字体。

# mplfont = {'size': 24, 'family': 'serif', 'serif': ['Times']}matplotlib.rc('font', **font)matplotlib.rc('text', usetex=True)# plotlyfig_plo.update_layout(font=dict(                           family="Times New Roman, Times, serif",                            size=24,                            color="black"                            ),                  )

可印刷

删除背景并使用高分辨率

始终提高图表的分辨率。默认情况下,它们的dpi和尺寸都小,因此将它们投影到屏幕上几乎没用。

图源:unsplash

Plotly支持在设置分辨率以方便查看的同时进行保存,因此在展示时能够确切地看到想要保存的图表,在尝试时就会理解这一优势。

Matplotlib则将保存与查看分开,这使得使用show()与savefig()会生成不同的图表,并由此引起麻烦。

# mplax.set_facecolor((1, 1, 1))# no resolution tool until saving :(# plotlyfig_plo.update_layout(plot_bgcolor='white',)fig_plo.update_layout(width=1000, height=1000,)

心中有屏幕

低对比色

在屏幕上显示还不错的颜色。

在屏幕上绘图的一个细微要点是决定使用哪种颜色。选取的颜色应是可区分的,以及眼睛易于辨认的。筛选过后的颜色将成为核心颜色。可以查看色图,我有一些经过尝试和测试的颜色可供参考。

我的颜色是天蓝色#23aaff,红苹果#ff6555,苔绿色#66c56c,芥末黄#f4b247。

图源:unsplash

保存为PDF

便携式文档格式(PDF)将图表另存为一系列彩色矢量对象,因此当它在屏幕上移动或移动到新设备时,它将被重新渲染。PDF使得演示或手稿中无法再有像素图表。

# mplplt.savefig(os.getcwd()+"plop_mpl.pdf", dpi=300)plt.show()# plotlyfig_plo.write_image(os.getcwd()+"plot_plotly.pdf")fig_plo.show()

输出

在滚动鼠标前,请仔细查看这些图。看看哪一个更一致且没有错误。以此来决定使用哪个平台。不要觉得有些错误是从源头上不可避免的。

Plotly

Matplotlib 版本的自动图例位置完全错误,某些字体没有正确转换,而且整个图都不太清晰。我更喜欢plotly的版本,没有错误且清晰。

Plotly改进版

Plotly的API几乎对绘图中的每个设置都有一个易于访问的工具,您可以将它们以一到两行代码进行分批传递。以下是我喜欢的图表微调(首选项)的集合。它可以控制图例的形状和位置,还能除图表周围的空白。试试看并查看相应的API,可以发现大量的工具。

# advancedfig_plo.update_layout(legend_orientation="h",                  legend=dict(x=.6,y=0.07,                             bgcolor='rgba(205, 223, 212, .4)',                             bordercolor="Black",                              ),                  margin=dict(r=10, l=10, b=10,t=10),                  )

输入

笔者喜欢这样为绘图脚本/模块组织导入库的排列。

# file toolsimport osimport sys# plotting toolsimport plotlyimport plotly.graph_objects as goimport seaborn as snsimport matplotlibimport matplotlib.pyplot as plt# Coreimport numpy as np

数据

本教程使用的数据来自一个plotly线图示例。可以在这里查看该图。需要注意的重要一点是,plotly具有出色的色彩科学——在查看电子版图表时,柔和的色彩对眼睛更友好(总色数r + g + b较低)。

# Frome https://plotly.com/python/line-charts/title = 'Main Source for News'labels = ['Television', 'Newspaper', 'Internet', 'Radio']colors = ['#1f77b4',  # muted blue          '#ff7f0e',  # safety orange          '#2ca02c',  # cooked asparagus green          '#d62728',  # brick red          ]mode_size = [8, 8, 12, 8]line_size = [2, 2, 4, 2]x_data = np.vstack((np.arange(2001, 2014),)*4)y_data =np.array([                   [74, 82, 80, 74, 73,72, 74, 70, 70, 66, 66, 69],                   [45, 42, 50, 46, 36,36, 34, 35, 32, 31, 31, 28],                   [13, 14, 20, 24, 20,24, 24, 40, 35, 41, 43, 50],                   [18, 21, 18, 21, 16, 14, 13, 18, 17, 16,19, 23],                   ])

结果赏心悦目,多么漂亮清晰的图表呀!

留言点赞关注

我们一起分享AI学习与发展的干货

如转载,请后台留言,遵守转载规范

python回归结果可视化图表解读_一个基于可视化理论的完美Python图表,快学起来相关推荐

  1. python交互式绘图库_一个交互式可视化Python库——Bokeh

    本篇为<Python数据可视化实战>第十篇文章,我们一起学习一个交互式可视化Python库--Bokeh. Bokeh基础 Bokeh是一个专门针对Web浏览器的呈现功能的交互式可视化Py ...

  2. python可视化图表插件_组件化可视化图表 - Recharts

    Recharts 是 2016 年初团队可视化组推出的一款可视化组件库,为基础表格的绘制提供了另外一种可能. Recharts 含义是重新定义(Redefined)图表.这个名字的背后在于这个图表在设 ...

  3. python数据建模案例源代码_一个完整的数据分析案例 | 用Python建立客户流失预测模型(含源数据+代码)...

    原标题:一个完整的数据分析案例 | 用Python建立客户流失预测模型(含源数据+代码) 来源:数据分析不是个事儿 作者:启方 原文: https://mp.weixin.qq.com/s/_20MN ...

  4. 宏基因组扩增子1图表解读-理解文章思路,零基础测序分析图表解读大全(箱线,散点,热,曼哈顿,火山,韦恩,三元,网络),老板再也不愁我的文献阅读了!

    本网内容转载自"宏基因组"公众号,更佳阅读体验.更多相关文章,欢迎点我跳转至公众号. 写在前面 (Introduction) 很多刚接触高通量测序数据分析文章的学生,感觉图表丰富多 ...

  5. python删除文件夹无法访问_零基础小白必看:python基本操作-文件、目录及路径

    使用python的os模块,简单方便完成对文件夹.文件及路径的管理与访问操作. 1 前言 在最近开发中,经常需要对文件进行读取.遍历.修改等操作,想要快速.简单的完成这些操作,我选择用 python ...

  6. python人工智能入门优达视频_机器学习:优达教你搭建Python 环境的正确姿势

    原标题:机器学习:优达教你搭建Python 环境的正确姿势 为机器学习搭建好 Python 环境听起来简单,但有时候坑还不少.如果此前没有配置过类似的环境,很可能会苦苦折腾各种命令好几个小时.可是我明 ...

  7. orcale可视化建立用户_建立动态可视化的新方法

    orcale可视化建立用户 by Sushrut Shivaswamy 通过Sushrut Shivaswamy 建立动态可视化的新方法 (A new way of building dynamic ...

  8. python 引用库的点.号_给大家分享一些实用的Python库

    halo,大家好,我是特仑苏,今天给大家分享一些Python库,希望可以给大家带来一些用处! Python附带了几个预打包的库.但是,还有许多其他库可用于高级解释通用编程语言.您还可以从中了解异步Py ...

  9. python 端口扫描 东京_GitHub - w2n1ck/portscan: 一个基于Python+Go的端口扫描及服务探测脚本...

    portscan 一个基于Python+Go的端口扫描及服务探测脚本 0x00 前言 近期由于公司环境整改/迭代以及历史弱口令等撞库,运维同事将内网测试环境的一些SSH等敏感端口对外,导致被挖矿团伙利 ...

最新文章

  1. 抛弃UITableView,让所有列表页不再难构建
  2. 帧中继和路由协议详解-在帧中继多点子接口上运行EIGRP
  3. java maven 项目依赖管理 简介
  4. C#一元运算重载的深入理解
  5. 新加入“扫码阅读”功能
  6. 解决Linux下使用sqlplus不能使用上下键,退格键
  7. 寻找不设防的无线局域网——战争驾驶全接触
  8. 做项目管理需要哪些技能呢?
  9. endnote x9 word 闪退
  10. Java实现图片压缩功能
  11. 关系数据库之关系代数
  12. java打好基础的100道题库(勇敢牛牛不怕困难)
  13. mac 设置阿里企业邮箱
  14. 操作系统实践-BIOS
  15. 活性氧Propiconazole-d3 (nitrate),CAS No. 2699607-26-4
  16. java jms activemq_JMS-ActiveMQ与Java消息服务
  17. ROS教程(二十一):Roslaunch在大型项目中的使用技巧
  18. 前端福音:Serverless 和 SSR 的天作之合
  19. 查看SQL server端口
  20. 图像处理与模式识别文章收集

热门文章

  1. Android应用程序文件缓存getCacheDir()和getExternalCacheDir()
  2. WCF学习资源收集汇总
  3. 创建Session时会把含有Session ID 的Cookie对象加到响应对象上
  4. 接收字节流_Java中的IO流之输入流|乐字节
  5. python2还是3好_学Python2还是python3 究竟哪个好
  6. 3d建模电脑配置要求_3D建模学习对于电脑配置要求高不高?
  7. 帮设计师打开思路的网站主页设计案例,给你出灵感
  8. 中国风国潮PNG免扣素材|瞬间提升韵味的书法字体
  9. 资源分享|平面设计师可参考的素材网站
  10. 原创设计师如何提高影响力?到集设,让你的原创设计作品展示给世界