在上文Python数据可视化实例:关于图表“贵族”折线的增强优化方法中,我们总结了很多关于折线图的方法和注意事项,有兴趣的可以回头翻看一下。
越是想展示更多,越是容易混乱在前面的注意事项里,我们提到有一项叫做“意大利面条图”,来形容多条折线在一组图里的混乱情况。
N多条折线错综复杂、交叉在一起,根本分不清哪个是重点、哪里有异常。
在实际业务中,很多时候都会遇到这种图表,比如不同城市在同一个时间内的业务变化情况
LOSS IS MOER:少即是多,突出重点
其实业务讲究解决问题,图表的数据自然也应该直接瞄准重点。而不是把所有的数据都堆砌到一张图表里。越是简单直接,越是能加速解读数据,也能提高商业效率。
下面我们来做一组实验:
这是一张图满是汽车的图片,你第一眼看到它,会先注意或者关注到哪辆车?
OK,再来看看这张图片,你的注意力会集中到哪里?
结论不言而喻,第二张图留给我们的印象更深刻,更容易吸引我们的注意力。
甚至我们会产生兴趣,想知道这辆车到底跑的多快,什么品牌等等。
这也正是因为我们眼睛和注意力的承载力有限,比如看股市图表,一般人是受不了这些密密麻麻的。
所以我们更喜欢简单明了的东西,它理解起来更快,当然也容易被忽悠和利用。
同样的道理,就是文章→图表→长视频→短视频→大标题,越是简单直接,越是惹人关注!
看看图表中如何解决“意大利面条图”OK,下面我们来看看如何利用这个原则来解决杂乱图表的问题
数据为模拟数据,主要是为了演示效果,没有具体商业意义。
准备工作
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__)
## 初始字体设置,设置好可避免很多麻烦
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)
# 设置为该路径为工作路径,一般存放数据源文件
Sales_data = pd.read_excel('虚拟演示案例数据.xlsx',
sheet_name='销售数据表')
Sales_data = pd.read_excel('虚拟演示案例数据.xlsx',
sheet_name='销售数据表')
Sales_data_sum = Sales_data_sum['2015-05-01':'2015-05-30']
Sales_data_sum
City_name = Sales_data_sum['门店城市'].unique().tolist()
One_City_data = Sales_data_sum.loc[Sales_data_sum['门店城市']=='北京市']
One_City_data
# 画出其他城市的折线
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语法,建议自学一下。
另外其实这个功能在Excel中只需动动手指修改线条颜色,比起写代码省时间。
喜欢本篇内容,请动动小手转发和关注一下,我是数据分析师,老海。
,