如果我用相同的颜色和标签名称重复绘图,标签会多次出现:
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.gca(projection='3d')
x_labels = [10,20,30]
x = [1,2,3,4]
y = [3,1,5,1]
for label in x_labels:
x_3d = label*np.ones_like(x)
ax.plot(x_3d, x, y, color='black', label='GMM')
ax.legend()
是否有可能将它们合二为一,将相同的标签组合成一个?像
这样的东西我可以通过
制作上面的照片from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.gca(projection='3d')
x_labels = [10,20,30]
x = [1,2,3,4]
y = [3,1,5,1]
legend = False
for label in x_labels:
x_3d = label*np.ones_like(x)
ax.plot(x_3d, x, y, color='black', label='GMM')
if legend == False:
ax.legend()
legend = True
但这感觉非常难看,有什么好看的吗?或者我只是以错误的方式制作情节?
答案 0 :(得分:3)
您应该只显示三组数据之一的标签。可以通过在label = ...
的{{1}}中添加if / else语句来完成。以下是一个例子:
ax.plot()
这给出了以下图表:
修改强>
如果您有不同的颜色,那么您可以使用以下内容仅为每种颜色显示一次图例:
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.gca(projection='3d')
x_labels = [10,20,30]
x = [1,2,3,4]
y = [3,1,5,1]
for label in x_labels:
x_3d = label*np.ones_like(x)
ax.plot(x_3d, x, y, color='black', label='GMM' if label == x_labels[0] else '')
# above only shows the label for the first plot
ax.legend()
plt.show()
这给出了以下图表: