Matplotlib 自定义标记/符号
Matplotlib是Python中最流行的数据可视化库之一,它提供了丰富的绘图功能,包括:折线图(line plot)、散点图(scatter plot)、直方图(histogram)、箱线图(box plot)等等。在Matplotlib中,我们可以通过自定义标记或者符号来美化我们的图形。
阅读更多:Matplotlib 教程
Matplotlib基本绘图
在介绍Matplotlib自定义标记/符号之前,我们先来回顾一下Matplotlib的基本绘图方法。
折线图
下面的代码演示了如何使用Matplotlib绘制折线图。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 1000)
y = np.sin(x)
plt.plot(x, y)
plt.show()
散点图
下面的代码演示了如何使用Matplotlib绘制散点图。
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(100)
y = np.random.randn(100)
plt.scatter(x, y)
plt.show()
直方图
下面的代码演示了如何使用Matplotlib绘制直方图。
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(1000)
plt.hist(x, bins=50)
plt.show()
箱线图
下面的代码演示了如何使用Matplotlib绘制箱线图。
import matplotlib.pyplot as plt
import numpy as np
data = np.random.randn(100, 5)
plt.boxplot(data)
plt.show()
Matplotlib基本标记
在Matplotlib中,我们可以使用一些基本的标记来点表示散点图中的数据点。下面是Matplotlib中的基本标记:
标记 | 描述 |
---|---|
‘.’ | 点 |
‘,’ | 像素 |
‘o’ | 圆 |
‘v’ | 下三角形 |
‘^’ | 上三角形 |
‘<‘ | 左三角形 |
‘>’ | 右三角形 |
‘1’ | 下箭头 |
‘2’ | 上箭头 |
‘3’ | 左箭头 |
‘4’ | 右箭头 |
‘s’ | 正方形 |
‘p’ | 五边形 |
‘*’ | 星形 |
‘h’ | 六边形 |
‘H’ | 八边形 |
‘+’ | 加号 |
‘x’ | 叉号 |
‘D’ | 钻石 |
‘d’ | 小钻石 |
下面的代码演示了如何使用Matplotlib中的基本标记绘制散点图。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.scatter(x, y, marker='+')
plt.show()
Matplotlib自定义标记
在Matplotlib中,我们可以通过自定义标记的方式来绘制更多样化的散点图。自定义标记需要通过绘制矢量图形的方式来得到。在Matplotlib中,我们可以使用Path类来创建自定义标记,Path类提供了各种各样的绘制方法,例如直线、曲线、矩形、圆等等,我们可以结合这些绘制方法来创建自己的标记。
下面的代码演示了如何使用Path类来创建自定义标记。
import matplotlib.pyplot as plt
from matplotlib.path import Path
import matplotlib.patches as patches
verts = [
(0, 0), (0.5, 1), (1, 0), (0.5, 0.5), (0, 0)
]
codes = [Path.MOVETO,
Path.LINETO,
Path.LINETO,
Path.LINETO,
Path.CLOSEPOLY,
]
path = Path(verts, codes)
fig, ax = plt.subplots()
patch = patches.PathPatch(path, facecolor='r')
ax.add_patch(patch)
plt.xlim(-0.5, 1.5)
plt.ylim(-0.5, 1.5)
plt.show()
我们可以将自定义标记应用到散点图中,下面的代码演示了如何使用自定义标记绘制散点图。
import matplotlib.pyplot as plt
from matplotlib.path import Path
import matplotlib.patches as patches
import numpy as np
verts = [
(0, 0), (0.5, 1), (1, 0), (0.5, 0.5), (0, 0)
]
codes = [Path.MOVETO,
Path.LINETO,
Path.LINETO,
Path.LINETO,
Path.CLOSEPOLY,
]
path = Path(verts, codes)
fig, ax = plt.subplots()
patch = patches.PathPatch(path, facecolor='none', linewidth=2, edgecolor='r')
ax.add_patch(patch)
x = np.random.randn(100)
y = np.random.randn(100)
plt.scatter(x, y, marker=patch)
plt.show()
总结
在Matplotlib中,我们可以通过自定义标记/符号的方式来美化我们的图形。通过使用Path类来创建自定义标记,我们可以创建出更加丰富多彩的散点图。同时,我们还可以将自定义标记应用到其他类型的图形中,例如线图、直方图等等,来提升图像的可读性和美观度。