Python 显示matplotlib动态创建的图例

Python 显示matplotlib动态创建的图例,python,matplotlib,scatter-plot,Python,Matplotlib,Scatter Plot,我的df有4列:x、y、z和grouping。我已经创建了一个3D绘图,每个点的指定颜色由它在该行中所属的分组决定。作为参考,“分组”可以是1到6之间的任何数字。代码如下所示: fig = plt.figure() ax = Axes3D(fig) ax.scatter3D(df.x, df.y, df.z, c=df.grouping) plt.show() 我想在绘图上显示一个图例,显示哪个颜色属于哪个分组。以前,我使用Seaborn进行二维绘图,图例是自动绘制的。如何使用matplotl

我的df有4列:x、y、z和grouping。我已经创建了一个3D绘图,每个点的指定颜色由它在该行中所属的分组决定。作为参考,“分组”可以是1到6之间的任何数字。代码如下所示:

fig = plt.figure()
ax = Axes3D(fig)
ax.scatter3D(df.x, df.y, df.z, c=df.grouping)
plt.show()

我想在绘图上显示一个图例,显示哪个颜色属于哪个分组。以前,我使用Seaborn进行二维绘图,图例是自动绘制的。如何使用matplotlib添加此功能?

如果要进行颜色映射的值是数字,解决方案可以非常简单:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

a = np.random.rand(3,40)
c = np.random.randint(1,7, size=a.shape[1])

fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")
sc = ax.scatter3D(*a, c=c)
plt.legend(*sc.legend_elements())
plt.show()

如果要进行颜色映射的值是数字,则解决方案可以简单到:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

a = np.random.rand(3,40)
c = np.random.randint(1,7, size=a.shape[1])

fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")
sc = ax.scatter3D(*a, c=c)
plt.legend(*sc.legend_elements())
plt.show()

答案比需要的要详细一点,但肯定为我解决了这个问题!分配
sc=ax.scatter3D(df.x,df.y,df.z,c=df.grouping)
然后在绘图之前调用
plt.legend(*sc.legend_elements())
。非常感谢。这并不是“比需要的更冗长”!但是这个问题并没有包含一个答案!刚意识到我最初的回复没有发布,但你是对的。还是习惯于这样发帖。再次感谢!一个比需要的更详细的答案,但肯定为我解决了这个问题!分配
sc=ax.scatter3D(df.x,df.y,df.z,c=df.grouping)
然后在绘图之前调用
plt.legend(*sc.legend_elements())
。非常感谢。这并不是“比需要的更冗长”!但是这个问题并没有包含一个答案!刚意识到我最初的回复没有发布,但你是对的。还是习惯于这样发帖。再次感谢!