marker width matplotlib
在Matplotlib中,我们可以通过设置marker width来调整散点图中点的大小。marker width控制着散点的宽度,使得散点看起来更加清晰和醒目。在本文中,我们将详细介绍如何使用Matplotlib中的marker width来调整散点图的效果。
设置默认marker width
我们可以通过以下代码来设置默认marker width大小:
import matplotlib.pyplot as plt
plt.rcParams['lines.markersize'] = 10
plt.scatter([1, 2, 3, 4], [10, 15, 13, 18], marker='o')
plt.show()
Output:
设置单个散点的marker width
如果我们想要设置单个散点的marker width,可以在scatter()函数中传入参数linewidths,如下所示:
import matplotlib.pyplot as plt
plt.rcParams['lines.markersize'] = 10
plt.scatter([1, 2, 3, 4], [10, 15, 13, 18], marker='o', linewidths=2)
plt.show()
Output:
设置不同散点的marker width
有时候,我们希望根据数据的不同特征来设置散点的marker width。我们可以创建一个列表来存储每个散点的marker width,然后将其传入scatter()函数中,如下所示:
import matplotlib.pyplot as plt
plt.rcParams['lines.markersize'] = 10
sizes = [20, 30, 40, 50]
plt.scatter([1, 2, 3, 4], [10, 15, 13, 18], s=sizes)
plt.show()
Output:
使用数组设置所有散点的marker width
如果我们希望使用数组来设置所有散点的marker width,可以通过使用numpy数组来实现。下面是一个示例代码:
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['lines.markersize'] = 10
sizes = np.array([10, 20, 30, 40])
plt.scatter([1, 2, 3, 4], [10, 15, 13, 18], s=sizes)
plt.show()
Output:
设置marker edge width
除了设置散点的填充宽度外,我们还可以设置散点的边缘宽度。这可以通过传入参数linewidths来实现。下面是一个示例代码:
import matplotlib.pyplot as plt
plt.rcParams['lines.markersize'] = 10
plt.scatter([1, 2, 3, 4], [10, 15, 13, 18], marker='o', linewidths=2, edgecolors='r')
plt.show()
Output:
在散点图中添加文本标签
在散点图中添加文本标签是很常见的需求。我们可以使用annotate()函数来实现。下面是一个示例代码:
import matplotlib.pyplot as plt
plt.rcParams['lines.markersize'] = 10
plt.scatter([1, 2, 3, 4], [10, 15, 13, 18], marker='o', linewidths=2)
for i, txt in enumerate(['A', 'B', 'C', 'D']):
plt.annotate(txt, (i+1, [10, 15, 13, 18][i]))
plt.show()
Output:
设置marker width为0
有时候,我们希望散点的大小为0,可以通过设置s=0来实现。下面是一个示例代码:
import matplotlib.pyplot as plt
plt.rcParams['lines.markersize'] = 10
plt.scatter([1, 2, 3, 4], [10, 15, 13, 18], s=0)
plt.show()
Output:
绘制不同形状的散点
除了圆形散点外,Matplotlib还支持其他形状的散点。我们可以通过设置marker参数来选择不同的形状,如下所示:
import matplotlib.pyplot as plt
plt.rcParams['lines.markersize'] = 10
plt.scatter([1, 2, 3, 4], [10, 15, 13, 18], marker='s')
plt.show()
Output:
同时设置marker size和marker edge width
如果我们希望同时设置散点的填充宽度和边缘宽度,可以通过传入linewidths参数来实现,如下所示:
import matplotlib.pyplot as plt
plt.rcParams['lines.markersize'] = 10
plt.scatter([1, 2, 3, 4], [10, 15, 13, 18], s=100, linewidths=2)
plt.show()
Output:
设置marker edge color
除了设置边缘宽度外,我们还可以设置散点的边缘颜色。这可以通过传入edgecolors参数来实现,如下所示:
import matplotlib.pyplot as plt
plt.rcParams['lines.markersize'] = 10
plt.scatter([1, 2, 3, 4], [10, 15, 13, 18], s=100, edgecolors='r')
plt.show()
Output:
绘制带颜色的散点
有时候,我们希望散点具有不同的颜色。我们可以通过传入c参数来实现,如下所示:
import matplotlib.pyplot as plt
plt.rcParams['lines.markersize'] = 10
colors = ['r', 'g', 'b', 'y']
plt.scatter([1, 2, 3, 4], [10, 15, 13, 18], s=100, c=colors)
plt.show()
Output:
设置colormap
如果我们希望散点颜色具有渐变效果,可以通过设置colormap来实现。下面是一个示例代码:
import matplotlib.pyplot as plt
plt.rcParams['lines.markersize'] = 10
sizes = [20, 30, 40, 50]
colors = [1, 2, 3, 4] # values used for colormap
plt.scatter([1, 2, 3, 4], [10, 15, 13, 18], s=sizes, c=colors, cmap='viridis')
plt.colorbar()
plt.show()
Output:
设置透明度
除了设置颜色外,我们还可以设置散点的透明度。这可以通过传入alpha参数来实现,如下所示:
import matplotlib.pyplot as plt
plt.rcParams['lines.markersize'] = 10
plt.scatter([1, 2, 3, 4], [10, 15, 13, 18], s=100, alpha=0.5)
plt.show()
Output:
设置散点在z轴上的顺序
有时候,我们希望控制散点在z轴上的顺序。可以通过传入参数depthshade=False来实现。下面是一个示例代码:
import matplotlib.pyplot as plt
plt.rcParams['lines.markersize'] = 10
ax = plt.axes(projection='3d')
z = [1, 2, 3, 4]
sizes = [20, 30, 40, 50]
ax.scatter3D([1, 2, 3, 4], [10, 15, 13, 18], z, s=sizes, depthshade=False)
plt.show()
Output:
绘制动态散点
如果我们想要绘制动态的散点图,可以使用Animation模块。下面是一个示例代码:
import matplotlib.animation as animation
import matplotlib.pyplot as plt
plt.rcParams['lines.markersize'] = 10
fig, ax = plt.subplots()
sc = ax.scatter([], [], s=100)
def update(frame):
x = [1, 2, 3, 4]
y = [10, 15, 13, 18]
sc.set_offsets(np.c_[x, y])
return sc,
ani = animation.FuncAnimation(fig, update, frames=10, blit=True)
plt.show()
设置marker样式
除了设置marker形状外,我们还可以设置marker的样式。下面是一个示例代码:
import matplotlib.pyplot as plt
plt.rcParams['lines.markersize'] = 10
plt.scatter([1, 2, 3, 4], [10, 15, 13, 18], marker='o', facecolors='none', edgecolors='r')
plt.show()
Output:
使用自定义marker
如果我们想要使用自定义的marker,可以通过使用Path对象来创建自定义的marker。下面是一个示例代码:
from matplotlib.path import Path
import matplotlib.patches as patches
import matplotlib.pyplot as plt
plt.rcParams['lines.markersize'] = 10
vertices = [(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(vertices, codes)
fig, ax = plt.subplots()
patch = patches.PathPatch(path, facecolor='none', edgecolor='r', lw=2)
ax.add_patch(patch)
plt.show()
结语
通过本文的介绍,我们详细了解了如何通过设置marker width来调整散点图的效果。从设置默认marker width到自定义marker,我们可以根据需求灵活地调整散点图的样式,使得图表更加清晰和美观。