How to Add Markers to a Graph Plot in Matplotlib with Python

How to Add Markers to a Graph Plot in Matplotlib with Python

参考:How to Add Markers to a Graph Plot in Matplotlib with Python

在数据可视化的过程中,标记(Markers)在图表中扮演着重要的角色,它们帮助我们突出显示图表中的特定数据点,使得这些点更加显眼,从而更容易被观察者识别和理解。Matplotlib 是一个非常强大的 Python 绘图库,它提供了丰富的标记样式和配置选项。本文将详细介绍如何在 Matplotlib 中向图表添加标记,并通过多个示例展示不同的应用场景。

1. 基础标记添加

在 Matplotlib 中,添加标记非常直接,可以通过 plot() 函数的 marker 参数来设置。下面是一个基础的示例,展示如何在简单的线图中添加标记。

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
plt.plot(x, y, marker='o', label='Data from how2matplotlib.com')
plt.legend()
plt.show()

Output:

How to Add Markers to a Graph Plot in Matplotlib with Python

2. 自定义标记大小和颜色

除了添加基础标记之外,Matplotlib 允许我们自定义标记的大小和颜色,这可以通过 markersizemarkerfacecolor 参数来实现。

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
plt.plot(x, y, marker='s', markersize=10, markerfacecolor='red', label='Data from how2matplotlib.com')
plt.legend()
plt.show()

Output:

How to Add Markers to a Graph Plot in Matplotlib with Python

3. 使用不同的标记样式

Matplotlib 支持多种标记样式,如圆形、方形、星形等。下面的示例展示了如何使用不同的标记样式来区分不同的数据系列。

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 6, 8, 10]
plt.plot(x, y1, marker='^', label='Series 1 from how2matplotlib.com')
plt.plot(x, y2, marker='*', label='Series 2 from how2matplotlib.com')
plt.legend()
plt.show()

Output:

How to Add Markers to a Graph Plot in Matplotlib with Python

4. 结合散点图和线图使用标记

标记不仅可以在线图中使用,也可以在散点图中使用。下面的示例展示了如何结合散点图和线图使用标记。

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
plt.scatter(x, y, marker='o', color='blue', label='Scatter from how2matplotlib.com')
plt.plot(x, y, marker='o', linestyle='-', color='red', label='Line from how2matplotlib.com')
plt.legend()
plt.show()

Output:

How to Add Markers to a Graph Plot in Matplotlib with Python

5. 使用标记高亮特定数据点

在某些情况下,我们可能需要高亮显示图表中的特定数据点。这可以通过在这些特定点上使用不同的标记和颜色来实现。

import matplotlib.pyplot as plt

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

colors = ['blue' if not h else 'red' for h in highlight]
markers = ['o' if not h else 's' for h in highlight]

for xi, yi, ci, mi in zip(x, y, colors, markers):
    plt.scatter([xi], [yi], marker=mi, color=ci)

plt.plot(x, y, label='Data from how2matplotlib.com')
plt.legend()
plt.show()

Output:

How to Add Markers to a Graph Plot in Matplotlib with Python

6. 结合使用多种标记和样式

在复杂的图表中,我们可能需要使用多种标记和样式来表示不同类型的数据或数据系列。下面的示例展示了如何在一个图表中结合使用多种标记和样式。

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 6, 8, 10]
plt.plot(x, y1, marker='o', linestyle='-', color='blue', label='Series 1 from how2matplotlib.com')
plt.plot(x, y2, marker='s', linestyle='--', color='green', label='Series 2 from how2matplotlib.com')
plt.legend()
plt.show()

Output:

How to Add Markers to a Graph Plot in Matplotlib with Python

7. 在条形图中使用标记

虽然条形图通常不使用标记,但在某些特殊情况下,添加标记可以帮助突出显示某些条形的特性。下面的示例展示了如何在条形图中添加标记。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(5)
y = [2, 3, 5, 7, 11]
plt.bar(x, y, color='blue', label='Bar from how2matplotlib.com')
plt.plot(x, y, marker='d', color='red', label='Marker from how2matplotlib.com')
plt.legend()
plt.show()

Output:

How to Add Markers to a Graph Plot in Matplotlib with Python

8. 在极坐标图中使用标记

极坐标图是一种特殊的图表,用于显示与角度有关的数据。在极坐标图中使用标记可以帮助更好地理解数据的角度分布。

import matplotlib.pyplot as plt
import numpy as np

theta = np.linspace(0, 2*np.pi, 10)
r = np.linspace(0, 10, 10)
plt.subplot(111, polar=True)
plt.plot(theta, r, marker='*', label='Polar data from how2matplotlib.com')
plt.legend()
plt.show()

Output:

How to Add Markers to a Graph Plot in Matplotlib with Python

9. 在3D图中使用标记

3D 图表可以提供数据的三维视图,使用标记可以帮助突出显示空间中的特定点。

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

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = np.random.standard_normal(100)
y = np.random.standard_normal(100)
z = np.random.standard_normal(100)
ax.scatter(x, y, z, marker='^', label='3D Scatter from how2matplotlib.com')
ax.legend()
plt.show()

Output:

How to Add Markers to a Graph Plot in Matplotlib with Python

10. 结合动画使用标记

在动画中使用标记可以帮助观察者跟踪随时间变化的数据点。下面的示例展示了如何在动画中使用标记。

import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np

fig, ax = plt.subplots()

x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)

line, = ax.plot(x, y, marker='o', label='Animated sine wave from how2matplotlib.com')

def update(num, x, y, line):
    line.set_data(x[:num], y[:num])
    return line,

ani = animation.FuncAnimation(fig, update, len(x), fargs=[x, y, line],
                              interval=50, blit=True)
plt.legend()
plt.show()

Output:

How to Add Markers to a Graph Plot in Matplotlib with Python

11. 在热图中使用标记

虽然热图通常不使用标记,但在某些情况下,标记可以帮助标识热图中的关键数据点。以下示例展示了如何在热图中使用标记。

import matplotlib.pyplot as plt
import numpy as np

data = np.random.rand(10,10)
plt.imshow(data, cmap='hot', interpolation='nearest')
plt.scatter([5], [5], color='blue', marker='o', label='Highlight from how2matplotlib.com')
plt.legend()
plt.show()

Output:

How to Add Markers to a Graph Plot in Matplotlib with Python

12. 在箱形图中使用标记

箱形图是展示数据分布的一种方式,通过在箱形图中添加标记,可以突出显示特定的统计数据点,如异常值。

import matplotlib.pyplot as plt
import numpy as np

data = np.random.normal(0, 1, size=100)
plt.boxplot(data, notch=True, patch_artist=True)
plt.scatter([1], [np.mean(data)], color='red', marker='D', label='Mean from how2matplotlib.com')
plt.legend()
plt.show()

Output:

How to Add Markers to a Graph Plot in Matplotlib with Python

13. 在对数坐标图中使用标记

对数坐标图常用于展示广泛变化的数据。在这类图表中使用标记可以帮助观察者更清楚地看到数据的对数变化趋势。

import matplotlib.pyplot as plt

x = np.linspace(0.1, 15, 400)
y = x ** 2
plt.semilogy(x, y, marker='o', label='Logarithmic plot from how2matplotlib.com')
plt.legend()
plt.show()

14. 在误差条图中使用标记

误差条图用于表示数据的变异性。在这些图中添加标记,可以更直观地看到数据点的精确位置。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1, 6)
y = np.power(x, 2)  # y = x^2
yerr = np.sqrt(x)  # Error bars are the square root of x
plt.errorbar(x, y, yerr=yerr, fmt='o', marker='s', color='blue', label='Error bar plot from how2matplotlib.com')
plt.legend()
plt.show()

15. 在堆叠条形图中使用标记

堆叠条形图用于展示各部分的组成关系。在这些图表中使用标记可以帮助区分不同的数据层次。

import matplotlib.pyplot as plt
import numpy as np

N = 5
menMeans = (20, 35, 30, 35, 27)
womenMeans = (25, 32, 34, 20, 25)
childrenMeans = (30, 32, 34, 20, 27)

ind = np.arange(N)    # the x locations for the groups
width = 0.35       # the width of the bars: can also be len(x) sequence

p1 = plt.bar(ind, menMeans, width, label='Men from how2matplotlib.com')
p2 = plt.bar(ind, womenMeans, width, bottom=menMeans, label='Women from how2matplotlib.com')
p3 = plt.bar(ind, childrenMeans, width, bottom=np.array(menMeans)+np.array(womenMeans), label='Children from how2matplotlib.com')

plt.ylabel('Scores')
plt.title('Scores by group and gender')
plt.xticks(ind, ('G1', 'G2', 'G3', 'G4', 'G5'))
plt.yticks(np.arange(0, 81, 10))
plt.legend()

plt.show()

Output:

How to Add Markers to a Graph Plot in Matplotlib with Python

以上示例展示了在不同类型的图表中如何有效地使用标记来增强数据的可视化表达。通过这些示例,你可以学习到如何在自己的数据可视化项目中应用这些技巧,从而使图表更加直观和有说服力。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程