如何在 Matplotlib 中调整标记的大小

如何在 Matplotlib 中调整标记的大小

参考:How to Adjust Marker Size in Matplotlib

在数据可视化中,使用图表是表达数据关系的一种直观方式。Matplotlib 是 Python 中一个广泛使用的绘图库,它提供了丰富的接口来创建和展示图形。在散点图或线图中,标记(marker)的大小可以根据数据的某些特性进行调整,以提供更多的信息层次或视觉效果。本文将详细介绍如何在 Matplotlib 中调整标记的大小,并通过多个示例展示不同的应用场景。

基本概念

在 Matplotlib 中,标记的大小可以通过 s 参数(用于 scatter 函数)或 markersize(简写为 ms,用于 plot 函数)来调整。这些参数接受一个数值,该数值定义了标记的大小。大小的单位通常是点(point),其中 1 point 等于 1/72 英寸。

示例代码

示例 1: 基本散点图标记大小调整

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
sizes = [20, 50, 80, 200, 500]

plt.scatter(x, y, s=sizes)
plt.title("Basic Scatter Plot - how2matplotlib.com")
plt.show()

Output:

如何在 Matplotlib 中调整标记的大小

示例 2: 线图中调整标记大小

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

plt.plot(x, y, marker='o', markersize=10)
plt.title("Line Plot with Marker Size - how2matplotlib.com")
plt.show()

Output:

如何在 Matplotlib 中调整标记的大小

示例 3: 使用不同形状的标记

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
sizes = [100, 150, 200, 250, 300]
markers = ['o', 's', '^', 'D', 'p']

for xi, yi, mi, si in zip(x, y, markers, sizes):
    plt.scatter([xi], [yi], marker=mi, s=si)

plt.title("Scatter Plot with Different Markers - how2matplotlib.com")
plt.show()

Output:

如何在 Matplotlib 中调整标记的大小

示例 4: 标记大小映射到数据值

import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(50)
y = np.random.rand(50)
sizes = np.random.rand(50) * 1000  # Random sizes between 0 and 1000

plt.scatter(x, y, s=sizes)
plt.title("Marker Size Mapped to Data Values - how2matplotlib.com")
plt.show()

Output:

如何在 Matplotlib 中调整标记的大小

示例 5: 动态调整标记大小

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = np.sin(x)
sizes = np.linspace(10, 100, 100)

plt.scatter(x, y, s=sizes)
plt.title("Dynamically Changing Marker Sizes - how2matplotlib.com")
plt.show()

Output:

如何在 Matplotlib 中调整标记的大小

示例 6: 使用颜色和大小编码

import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(50)
y = np.random.rand(50)
colors = np.random.rand(50)
sizes = np.random.rand(50) * 100

plt.scatter(x, y, c=colors, s=sizes, alpha=0.5)
plt.colorbar()  # Show color scale
plt.title("Color and Size Coding - how2matplotlib.com")
plt.show()

Output:

如何在 Matplotlib 中调整标记的大小

示例 7: 散点图中使用自定义颜色和大小

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
colors = ['red', 'blue', 'green', 'black', 'orange']
sizes = [100, 200, 300, 400, 500]

plt.scatter(x, y, c=colors, s=sizes)
plt.title("Custom Colors and Sizes in Scatter Plot - how2matplotlib.com")
plt.show()

Output:

如何在 Matplotlib 中调整标记的大小

示例 8: 标记大小与轴比例的关系

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [10, 20, 30, 40, 50]
sizes = [100, 200, 300, 400, 500]

plt.scatter(x, y, s=sizes)
plt.title("Marker Size with Axis Scaling - how2matplotlib.com")
plt.xscale('log')
plt.yscale('log')
plt.show()

Output:

如何在 Matplotlib 中调整标记的大小

示例 9: 使用 scatteredgecolors 属性

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
sizes = [100, 200, 300, 400, 500]

plt.scatter(x, y, s=sizes, edgecolors='black')
plt.title("Scatter Plot with Edge Colors - how2matplotlib.com")
plt.show()

Output:

如何在 Matplotlib 中调整标记的大小

示例 10: 在3D图中调整标记大小

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
z = [10, 9, 8, 7, 6]
sizes = [100, 200, 300, 400, 500]

ax.scatter(x, y, z, s=sizes)
ax.set_title("3D Scatter Plot with Marker Sizes - how2matplotlib.com")
plt.show()

Output:

如何在 Matplotlib 中调整标记的大小

结论

在 Matplotlib 中调整标记的大小是一个简单而有效的方法,可以帮助更好地解读图表中的数据。通过调整大小,可以突出显示重要的数据点或展示数据的额外维度。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程