如果你觉得内容对你有帮助,请在 GitHub 上点个 star 吧!

3.4. matplotlib 其他画图参数#

Hide code cell content
import matplotlib.pyplot as plt
import numpy as np

为了画图更美观、更满足我们需求,还有很多参数可以设置,包括线条式样、颜色、图例等。

线条式样#

可以用 linewidth 设置线宽,linestyle 设置线形,常用线形有:

  • -:一个减号,实线

  • –-:两个减号,虚线

  • -.:点划线

  • ::点线

例如:生成两组随机数,对这两组随机数,我们在同一个坐标轴上画出两条线图,x=0,1,…99 序数,y 为对应数据的累积值,颜色 color 参数分别为蓝色和橙色,线宽 linewidth 参数分别为 3 和 2,线形 linestyle 参数为虚线和点线。

Note

l, = ax.plot() 用法是为了接收 ax.plot() 返回的对象,因为 ax.plot() 返回了多个对象。当绘制折线图时,ax.plot() 返回一个包含绘制的折线对象的列表。通过使用 l, = ax.plot(),将列表中的对象解包到变量 l 中,后续则可以修改这些对象的属性,例如本处修改线条样式。

data1, data2 = np.random.randn(2,100)
fig, ax = plt.subplots(figsize=(5, 2.7))
x = np.arange(len(data1))
ax.plot(x, np.cumsum(data1), color='blue', linewidth=3, linestyle='--')
l, = ax.plot(x, np.cumsum(data2), color='orange', linewidth=2)
l.set_linestyle(':')
../_images/c3491a03d689aa29d694447a4225b1b8eb7248c230a0edbf03fa52b7f2ede206.png

颜色#

除了上面的例子设置的线条颜色,颜色还有更精准的设置,有些图形元素可以接受多种颜色,例如散点图中,标记的边缘颜色可以不同于内部颜色。

案例:颜色#

例:对随机生成的两组数据 data1 和 data2,分别作为 x 轴坐标和 y 轴坐标,画散点图,点内部渲染为蓝色,边缘为黑色。

Note

在 Matplotlib 中,”C0” 和 “k” 是用于表示颜色的字符串。 “C0” 表示默认颜色循环中的第一个颜色。Matplotlib 通常使用颜色循环来为不同的数据系列分配不同的颜色,以便它们在图中更容易区分。在这里,”C0” 表示颜色循环中的第一个颜色,通常是蓝色。”k” 是使用单个字符来表示颜色,”k” 代表黑色,常见的还有 b – 蓝色, c – 青色,g – 绿色,m – 紫红色,r – 红色,w – 白色,y – 黄色。更多的颜色可以自行搜索。

fig, ax = plt.subplots(figsize=(5, 2.7))
ax.scatter(data1, data2, facecolor='C0', edgecolor='k')
<matplotlib.collections.PathCollection at 0x1267600d0>
../_images/ee700fc346144adf6ede9cce3fd6c7be00f60c2e3420611bf3e9b204964b88c3.png

标记点形状#

通常我们作图时,尤其是二元坐标图,是对 (x,y) 形式的点画图,点的样式可以用 marker 参数设置,常用标志点形状有:

  • o:圆形

  • *:星型

  • +:+ 号标记

  • x:x 号标记

案例:标记#

例:将上例中的散点图修改为星型标记。

fig, ax = plt.subplots(figsize=(5, 2.7))
ax.scatter(data1, data2, facecolor='C0', edgecolor='k',marker='*')
<matplotlib.collections.PathCollection at 0x12684b510>
../_images/4236dae385ef610fb32a646b0b1e1937daf45767f24f4690cc27a92be66c78b9.png

图例 legend#

.legend() 用来给图像增加图例,图例是对图像上各种符号和颜色所代表内容和指标的说明,以便于更好地理解图。

当在坐标轴 ax 上画图时,传入不同的 label 参数,legend 函数则会对不同的 label 作出图例。

案例:图例#

例:对四个随机数据集 data1,data2,data3,data4 画出点线图,默认每一组颜色不相同,用图例对颜色和数据对应作出说明。

data1, data2, data3, data4 = np.random.randn(4, 100) 
fig, ax = plt.subplots(figsize=(5, 2.7))
ax.plot(data1, label='data1')
ax.plot(data2, label='data2')
ax.plot(data3, label='data3')
ax.plot(data4, label='data4')
ax.legend()
<matplotlib.legend.Legend at 0x126784910>
../_images/ddafb9774250a1d778b90236174538ef3768f4da245e001a8f16f1590fcf867d.png

由于是随机生成的点,因此该点线图是杂乱的波动。

案例:设置图例位置#

画图时,我们经常需要调整图例位置:legend() 的参数 loc 可用于设置到不同的位置,常见参数设置有 “upper right”, “upper left”, “lower left”, “lower right”, “right”, “center left”, “best” 等。

fig, ax = plt.subplots(figsize=(5, 2.7))
ax.plot(data1,  label='data1')
ax.plot(data2,  label='data2')
ax.plot(data3,  label='data3')
ax.plot(data4,  label='data4')
ax.legend(loc='upper right')
<matplotlib.legend.Legend at 0x1268fc310>
../_images/da84b3b8700bef944fb75cf7f586628d715f62e630eeaf83ad0dbf66b8d7d8f5.png