我创建了一个 4D 散点图来表示特定区域的不同温度。当我创建图例时,图例显示了正确的符号和颜色,但添加了一条线穿过它。我正在使用的代码是:
colors=['b', 'c', 'y', 'm', 'r']
lo = plt.Line2D(range(10), range(10), marker='x', color=colors[0])
ll = plt.Line2D(range(10), range(10), marker='o', color=colors[0])
l = plt.Line2D(range(10), range(10), marker='o',color=colors[1])
a = plt.Line2D(range(10), range(10), marker='o',color=colors[2])
h = plt.Line2D(range(10), range(10), marker='o',color=colors[3])
hh = plt.Line2D(range(10), range(10), marker='o',color=colors[4])
ho = plt.Line2D(range(10), range(10), marker='x', color=colors[4])
plt.legend((lo,ll,l,a, h, hh, ho),('Low Outlier', 'LoLo','Lo', 'Average', 'Hi', 'HiHi', 'High Outlier'),numpoints=1, loc='lower left', ncol=3, fontsize=8)
我尝试将 Line2D
更改为 Scatter
和 scatter
。 Scatter
返回了一个错误并且 scatter
改变了图形并返回了一个错误。
使用 scatter
,我将 range(10)
更改为包含数据点的列表。每个列表包含 x、y 或 z 变量。
lo = plt.scatter(xLOutlier, yLOutlier, zLOutlier, marker='x', color=colors[0])
ll = plt.scatter(xLoLo, yLoLo, zLoLo, marker='o', color=colors[0])
l = plt.scatter(xLo, yLo, zLo, marker='o',color=colors[1])
a = plt.scatter(xAverage, yAverage, zAverage, marker='o',color=colors[2])
h = plt.scatter(xHi, yHi, zHi, marker='o',color=colors[3])
hh = plt.scatter(xHiHi, yHiHi, zHiHi, marker='o',color=colors[4])
ho = plt.scatter(xHOutlier, yHOutlier, zHOutlier, marker='x', color=colors[4])
plt.legend((lo,ll,l,a, h, hh, ho),('Low Outlier', 'LoLo','Lo', 'Average', 'Hi', 'HiHi', 'High Outlier'),scatterpoints=1, loc='lower left', ncol=3, fontsize=8)
当我运行它时,图例不再存在,它是角落里一个什么都没有的小白框。
有什么建议吗?
原文由 user2386081 发布,翻译遵循 CC BY-SA 4.0 许可协议
二维散点图
使用
matplotlib.pyplot
模块的scatter
方法应该可以工作(至少对于 matplotlib 1.2.1 和 Python 2.7.5),如下例代码所示。此外,如果您使用的是散点图,请在图例调用中使用scatterpoints=1
而不是numpoints=1
以使每个图例条目只有一个点。在下面的代码中,我使用了随机值而不是一遍又一遍地绘制相同的范围,使所有的图都可见(即不相互重叠)。
3D 散点图
To plot a scatter in 3D, use the
plot
method, as the legend does not supportPatch3DCollection
as is returned by thescatter
method of anAxes3D
实例。要指定标记样式,您可以将其作为位置参数包含在方法调用中,如下例所示。可选地,可以包括对linestyle
和marker
参数的参数。