在上文Python数据可视化实例:关于图表“贵族”折线的增强优化方法中,我们总结了很多关于折线图的方法和注意事项,有兴趣的可以回头翻看一下。

越是想展示更多,越是容易混乱

在前面的注意事项里,我们提到有一项叫做“意大利面条图”,来形容多条折线在一组图里的混乱情况。

python画折线图不要线(如何在复杂混乱的折线图中突出一条线)(1)

N多条折线错综复杂、交叉在一起,根本分不清哪个是重点、哪里有异常。

python画折线图不要线(如何在复杂混乱的折线图中突出一条线)(2)

在实际业务中,很多时候都会遇到这种图表,比如不同城市在同一个时间内的业务变化情况

python画折线图不要线(如何在复杂混乱的折线图中突出一条线)(3)

LOSS IS MOER:少即是多,突出重点

其实业务讲究解决问题,图表的数据自然也应该直接瞄准重点。而不是把所有的数据都堆砌到一张图表里。越是简单直接,越是能加速解读数据,也能提高商业效率。

python画折线图不要线(如何在复杂混乱的折线图中突出一条线)(4)

下面我们来做一组实验:

这是一张图满是汽车的图片,你第一眼看到它,会先注意或者关注到哪辆车?

python画折线图不要线(如何在复杂混乱的折线图中突出一条线)(5)

OK,再来看看这张图片,你的注意力会集中到哪里?

python画折线图不要线(如何在复杂混乱的折线图中突出一条线)(6)

结论不言而喻,第二张图留给我们的印象更深刻,更容易吸引我们的注意力。

甚至我们会产生兴趣,想知道这辆车到底跑的多快,什么品牌等等。

这也正是因为我们眼睛和注意力的承载力有限,比如看股市图表,一般人是受不了这些密密麻麻的。

python画折线图不要线(如何在复杂混乱的折线图中突出一条线)(7)

所以我们更喜欢简单明了的东西,它理解起来更快,当然也容易被忽悠和利用。

python画折线图不要线(如何在复杂混乱的折线图中突出一条线)(8)

同样的道理,就是文章→图表→长视频→短视频→大标题,越是简单直接,越是惹人关注!

看看图表中如何解决“意大利面条图”

OK,下面我们来看看如何利用这个原则来解决杂乱图表的问题

数据为模拟数据,主要是为了演示效果,没有具体商业意义。

python画折线图不要线(如何在复杂混乱的折线图中突出一条线)(9)

准备工作

python画折线图不要线(如何在复杂混乱的折线图中突出一条线)(10)

import pandas as pd import numpy as np import matplotlib import matplotlib.pyplot as plt import seaborn as sns %matplotlib inline # 引入pandas、matplotlib、seaborn包 import sys # 引入系统模块库 import os # 引入文件/目录方法库 print(sys.version) print('------------') print(pd.__version__)

python画折线图不要线(如何在复杂混乱的折线图中突出一条线)(11)

## 初始字体设置,设置好可避免很多麻烦 plt.rcParams['font.sans-serif']=['Source Han Sans CN'] # 显示中文不乱码,思源黑体 plt.rcParams['font.size'] = 22 # 设置图表全局字体大小,后期某个元素的字体大小可以自行调整 plt.rcParams['axes.unicode_minus'] = False # 显示负数不乱码 ## 初始化图表大小 plt.rcParams['figure.figsize'] = (20.0, 8.0) # 设置figure_size尺寸 ## 初始化图表分辨率质量 plt.rcParams['savefig.dpi'] = 300 # 设置图表保存时的像素分辨率 plt.rcParams['figure.dpi'] = 300 # 设置图表绘制时的像素分辨率 ## 图表的颜色自定义 colors = ['#dc2624', '#2b4750', '#45a0a2', '#e87a59', '#7dcaa9', '#649E7D', '#dc8018', '#C89F91', '#6c6d6c', '#4f6268', '#c7cccf'] plt.rcParams['axes.prop_cycle'] = plt.cycler( color=colors) path = 'D:\\系列文章\\' # 自定义文件路径,可以自行设定 os.chdir(path) # 设置为该路径为工作路径,一般存放数据源文件

python画折线图不要线(如何在复杂混乱的折线图中突出一条线)(12)

Sales_data = pd.read_excel('虚拟演示案例数据.xlsx', sheet_name='销售数据表')

数据处理和转化

python画折线图不要线(如何在复杂混乱的折线图中突出一条线)(13)

Sales_data = pd.read_excel('虚拟演示案例数据.xlsx', sheet_name='销售数据表')

python画折线图不要线(如何在复杂混乱的折线图中突出一条线)(14)

Sales_data_sum = Sales_data_sum['2015-05-01':'2015-05-30'] Sales_data_sum

python画折线图不要线(如何在复杂混乱的折线图中突出一条线)(15)

City_name = Sales_data_sum['门店城市'].unique().tolist() One_City_data = Sales_data_sum.loc[Sales_data_sum['门店城市']=='北京市'] One_City_data

画出折线图,并突出显示北京的数据

python画折线图不要线(如何在复杂混乱的折线图中突出一条线)(16)

# 画出其他城市的折线 for i in City_name[1:6]: # 按照城市筛选数据 City_data = Sales_data_sum.loc[Sales_data_sum['门店城市']==i] # 画出每个城市的折线 plt.plot(City_data.index, City_data['购买数量'], color='grey') # 设置为灰色 # 画出每个城市的数据标签,如城市名称 plt.text(City_data.index[-1], City_data['购买数量'][-1], i,color='grey') # 设置为灰色 # 画出重点突出的折线 One_City_data = Sales_data_sum.loc[Sales_data_sum['门店城市']==City_name[0]] # 本案例具体是指北京 plt.plot(One_City_data.index, One_City_data['购买数量'], color='orange', linewidth=4, alpha=0.7) plt.text(One_City_data.index[0], One_City_data['购买数量'][0], City_name[0], color='orange') # 设置图表的其他元素 plt.title("北京5月份销量变化情况", loc='left', fontsize=30, fontweight=0, color='orange') # 设置图表标题 plt.xlabel("时间") # 设置X轴坐标名称 plt.ylabel("购买数量") # 设置Y轴坐标名称 sns.despine() # 默认无参数状态,就是删除上方和右方的边框,matplotlib貌似做不到 plt.show()

python画折线图不要线(如何在复杂混乱的折线图中突出一条线)(17)

写在最后

以上代码中,附加了注释内容。如果不清楚Python语法,建议自学一下。

另外其实这个功能在Excel中只需动动手指修改线条颜色,比起写代码省时间。

喜欢本篇内容,请动动小手转发和关注一下,我是数据分析师,老海。

,