如何在matplotlib图中突出显示一个点

8wtpewkr  于 2023-05-07  发布在  其他
关注(0)|答案(2)|浏览(195)

假设,我有以下两个列表,分别对应于x坐标和y坐标。

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

我希望第一对(1,3)是不同的颜色或形状。
如何使用python实现这一点?

eivnm1vs

eivnm1vs1#

最简单的可能答案之一。

import matplotlib.pyplot as plt

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

plt.plot(x[1:], y[1:], 'ro')
plt.plot(x[0], y[0], 'g*')

plt.show()
b4wnujal

b4wnujal2#

scatter()调用提供了更大的灵活性,您可以更直观地更改标记样式,大小和颜色(例如D代表钻石)。

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

plt.scatter(x[1:], y[1:], c='blue')
plt.scatter(x[0], y[0], c='red', marker='D', s=100);

# you can even write text as a marker
plt.scatter(x[0], y[0], c='red', marker=r'$\tau$', s=100);

如果要高亮显示的点不是第一个点,则过滤遮罩可能会有用。例如,下面的代码突出显示第三点。

plt.scatter(*zip(*(xy for i, xy in enumerate(zip(x, y)) if i!=2)), marker=6)
plt.scatter(x[2], y[2], c='red', marker=7, s=200);

也许,numpy的过滤更简单。

data = np.array([x, y])                                # construct a single 2d array
plt.scatter(*data[:, np.arange(len(x))!=2], marker=6)  # plot all except the third point
plt.scatter(*data[:, 2], c='red', marker=7, s=200);    # plot the third point

作为旁注,您可以找到标记样式herematplotlib.markers.MarkerStyle.markers的完整字典。

# a dictionary of marker styles
from matplotlib.markers import MarkerStyle
MarkerStyle.markers

相关问题