Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Matplotlib中的scatter()在三维散点图中添加图例_Python_Matplotlib - Fatal编程技术网

Python 使用Matplotlib中的scatter()在三维散点图中添加图例

Python 使用Matplotlib中的scatter()在三维散点图中添加图例,python,matplotlib,Python,Matplotlib,我想创建一个3D散点图,在同一个图中使用不同的数据集,并创建一个带有标签的图例。我面临的问题是,我无法正确添加图例,我得到了一个带有空标签的绘图,如图所示: 更具体地说,我得到一个错误: /usr/lib/pymodules/python2.7/matplotlib/legend.py:610: UserWarning: Legend does not support <mpl_toolkits.mplot3d.art3d.Patch3DCollection object at 0x3b

我想创建一个3D散点图,在同一个图中使用不同的数据集,并创建一个带有标签的图例。我面临的问题是,我无法正确添加图例,我得到了一个带有空标签的绘图,如图所示:

更具体地说,我得到一个错误:

/usr/lib/pymodules/python2.7/matplotlib/legend.py:610: UserWarning: Legend does not support <mpl_toolkits.mplot3d.art3d.Patch3DCollection object at 0x3bf46d0>
Use proxy artist instead."
我见过其他大致相似的示例,但没有一个使用散点()图。除了有效的解决方案,有人能解释我做错了什么吗

scatter1_proxy = matplotlib.lines.Line2D([0],[0], linestyle="none", c=colors[0], marker = 'o')
scatter2_proxy = matplotlib.lines.Line2D([0],[0], linestyle="none", c=colors[1], marker = 'v')
ax.legend([scatter1_proxy, scatter2_proxy], ['label1', 'label2'], numpoints = 1)
问题是legend函数不支持3D散点返回的类型。因此,你必须创建一个具有相同特征的“虚拟图”,并将其放入图例中

numpoints=1以仅获取图例中的一个点

linestyle=“none”因此图例中没有画线

您是否查看了关于代理艺术家的错误消息中指定的链接?是的,但由于我是python新手,我不清楚错误的原因。这篇文章很老。请注意,在当前版本的matplotlib中,图例的代码工作正常。
scatter1_proxy = matplotlib.lines.Line2D([0],[0], linestyle="none", c=colors[0], marker = 'o')
scatter2_proxy = matplotlib.lines.Line2D([0],[0], linestyle="none", c=colors[1], marker = 'v')
ax.legend([scatter1_proxy, scatter2_proxy], ['label1', 'label2'], numpoints = 1)