【发布时间】:2021-04-21 09:09:36
【问题描述】:
我正在尝试为相同的点创建共享相同颜色和标签的子图。我在下面有一个小例子。 每个点都有一个整数标签和一个用于标记和过滤的方向字符串。为了在不为每个标签创建单个散点的情况下显示正确的标签,我在图例中使用了 (handle, label) 选项。 (在我的数据里有3个以上的方向)
我的问题是下面的代码显示了过滤数据的错误标签,以及另一种颜色。我该怎么做
- 获得相同的颜色和
- 每个过滤点的标签与第一个图中的标签相同吗?
我知道 matplotlib 给出了一个不同句柄的列表,如果只有 2 个,则使用方向列表的前 2 个条目。我只是不知道是否有办法使用标签整数来获得正确的方向。 绘制下面的代码:
PS:这是我的第一个问题,如果有错误请见谅。
import numpy as np
import matplotlib.pyplot as plt
X = np.arange(0, 12)
Y = X
labels = np.array([x % 3 for x in X])
directions = ['left', 'right', 'up']*4
right_only = np.array([True if direc in ['right', 'up'] else False for direc in directions])
fig, (ax1, ax2) = plt.subplots(ncols=2, nrows=1, sharey='all', sharex='all')
scatter = ax1.scatter(X, Y, c=labels)
ax1.legend(handles=scatter.legend_elements()[0], labels=directions)
scatter2 = ax2.scatter(X[right_only], Y[right_only], c=labels[right_only])
ax2.legend(handles=scatter2.legend_elements()[0], labels=directions)
【问题讨论】:
-
您可以将
vmin=0, vmax=2添加到对scatter()的两个调用中。这样 0、1 和 2 将始终映射到相同的颜色。
标签: python matplotlib colors label