前段时间领导要求出一份数据分析报告,出图就选用了matplotlib。简单记录一些使用过程用到的一些方法、技巧以及问题和解决方法。
一、背景单调/换主题
默认背景是纯白色的,这里有几个方法可以配置背景颜色(主题
方法一
使用matplotlib.pyplot
自带的主题
from matplotlib import pyplot as plt
# 查看可用主题
print(plt.style.available)
# 设置主题
plt.style.use('seaborn-darkgrid')
方法二
使用seaborn库。这个库是在matplotlib之上进行了进一步的封装。
import seaborn as sns
sns.set_style("dark")
可用主题包括:darkgrid
whitegrid
dark
white
ticks
。
二、中文显示方框/换字体
这里是因为没有设置字体的原因。同样有两种方法,一种是将系统字体复制到matplotlib字体库中,这种方法在某具体系统上是一劳永逸的解决办法,但是一旦代码转移到别的系统,问题仍然存在,所以主要说第二个方法。
plt.rcParams['font.sans-serif'] = ['SimHei']
三、图片不清楚/设定分辨率
有时候会想要更加精细的图片,因为要贴到报告中嘛。而且当图片内容比较丰富(拥挤)的时候,分辨率低了根本看不清。
# plt.show()的时候的图像分辨率
plt.rcParams['figure.dpi'] = 300
# plt.save(‘xxx’) 保存下来的图片的分辨率
plt.rcParams['savefig.dpi'] = 300
四、字太小/设定字体
设定字体大小的方式跟上面一样
# 设定字体大小为12
plt.rcParams['font.size'] = 12
# 也可以用更新的方式来设定
plt.rcParams.update({'font.size': 12})
五、x轴标签太拥挤/旋转x轴标签
有时候x轴标签不是数字,而是我们需要的其他字符串,而字符串过长的话,会出现重叠的情况。一个常用的解决方法就是旋转x轴标签
matplotlib.pyplot.xticks(ticks=None,labels=None,[rotation=ine])
这里的rotation
参数就是用来控制旋转的。旋转方向是逆时针。
# x轴标签旋转15°
plt.xticks(rotation=15)
六、图片左右空白/设置x轴
当数据比较多的时候会现象出的一个情况就是,x轴无法被填满,即x轴数据无法完全填充x轴,导致图左右两边留白,影响美观。
上图有两个问题:x轴拥挤;左右留白。
解决第一个问题,除了上面提到的旋转之外,还可以通过手动设置figsize
的方式,拉长x轴,空间就够了,不会拥挤了。
解决第二个问题,可以通过手动设置x轴长度的方式,限定x轴长度,使数据能够铺满。
# 手动设置图片大小
fig.figure(figsize=(10, 5))
# 设置x轴标签, 不设置的话会隐藏一部分标签, 区别可以自己体验
fig.xticks(np.arange(0, 50))
# 设置x轴范围, 根据自己需求灵活设置
fig.xlim([-1, len(np.arange(0,50))])
七、颜色不够丰富/可使用的颜色
当我们需要画一些花里胡哨的图的时候,可能会用到多种颜色,我们常用的color
参数设置大概为
参数 | 颜色 |
---|---|
b | blue |
g | green |
r | red |
c | cyan |
m | megenta |
y | yellow |
k | black |
w | white |
一共8种颜色可供选择。除此之外,还要两类颜色可供使用。一类是‘tableau palette’,一类是‘css colors’。
以上三类颜色,可以通过以下代码查看:
> import matplotlib.colors as mcolors
> mcolors.BASE_COLORS
> # output
> mcolors.TABLEUA_COLORS
> # output
> mcolors.CSS4_COLORS
> # output
然后我们可以随机抽取,或者直接指定都行。