matplotlib是Python中用于数据可视化的核心库,它帮助以美观的方式探索数据。无论是数据分析师、商业分析师还是数据科学家,都应该熟悉matplotlib的强大功能。本文将介绍10个matplotlib的实用技巧,帮助创建有影响力的图表和故事。
改变图表大小是matplotlib中一个非常常见的需求。可以使用matplotlib.figure.Figure
类来创建一个新的图表,并使用figsize
参数来指定图表的宽度和高度(以英寸为单位)。
from matplotlib import pyplot as plt
fig, ax = plt.subplots(figsize=(10, 6)) # 创建一个宽度为10英寸,高度为6英寸的图表
子图是在一个图表中包含多个图表的概念。在matplotlib中,有三种方式可以生成子图:
subplot()
subplots()
subplot2grid()
subplot()
是最简单直接的方式,它接受行数、列数和索引作为参数,并返回一个轴对象用于绘图。
ax1 = plt.subplot(1, 2, 1) # 创建一个1行2列的子图中的第一个
subplots()
函数返回一个轴对象数组,只需要传递行数和列数作为参数。
fig, axs = plt.subplots(2, 2) # 创建一个2行2列的子图数组
subplot2grid()
允许将图表视为一个网格,并根据网格的行和列来调整图表大小。
ax2 = plt.subplot2grid((3, 3), (0, 0), colspan=3) # 在3x3网格中创建一个跨越3列的图表
注释是在图表上的一个点添加注释,使其更容易理解。在matplotlib中,有两种方式可以做到这一点:
text()
函数pyplot.annotate()
函数text()
函数可以在图表上的指定位置添加文本。
plt.text(0.5, 0.5, '这里是注释', fontsize=12, ha='center') # 在坐标(0.5, 0.5)处添加注释
annotate()
函数不仅可以添加文本,还可以添加标记和箭头。
plt.annotate('这里是注释', xy=(0.5, 0.5), xytext=(0.7, 0.7), arrowprops=dict(facecolor='black', shrink=0.05))
可以使用xlim()
和ylim()
函数来改变图表的坐标轴限制。
plt.xlim(0, 10) # 设置x轴的范围为0到10
还可以隐藏坐标轴的某些部分,通过设置轴的spines
的可见性为False
。
ax = plt.gca() # 获取当前轴对象
ax.spines['right'].set_visible(False) # 隐藏右侧的轴线
此外,还可以改变轴线的颜色,使其更加美观。
ax.spines['left'].set_color('red') # 将左侧轴线的颜色设置为红色
在Jupyter Notebook中,可以通过一行代码%matplotlib notebook
使matplotlib图表变得交互式。
%matplotlib notebook
这样,就可以在图表中进行缩放、平移和保存等操作。
条形图非常适合比较不同类别之间的数据。组合条形图允许用不同的组别来做同样的比较。
x = [1, 2, 3, 4]
height1 = [10, 15, 7, 10]
height2 = [8, 6, 9, 13]
bar_width = 0.35
plt.bar(x, height1, bar_width, label='夏季')
plt.bar([i + bar_width for i in x], height2, bar_width, label='冬季')
plt.legend()
可以使用xticks()
和yticks()
函数来修改图表的刻度。
plt.xticks([1, 2, 3, 4], ['A', 'B', 'C', 'D']) # 设置x轴的刻度标签
这些函数还可以用来改变字体、大小、旋转刻度等。
可以使用legend()
函数来修改图表的图例。
plt.legend(loc='upper left', frameon=False, ncol=2) # 修改图例的位置、边框和列数
在matplotlib中,可以添加文本和图像两种类型的水印。
plt.text(0.5, 0.5, '水印文字', fontsize=40, color='gray', alpha=0.5, ha='center') # 添加文本水印
也可以使用figimage()
函数来添加图像水印。
fig = plt.gcf()
fig.figimage('watermark.png', 10, 10) # 在(10, 10)位置添加图像水印
plt.savefig('plot.png') # 将图表保存为plot.png图片