三维绘图中的Python图例

三维绘图中的Python图例,python,matplotlib,plot,Python,Matplotlib,Plot,我正在用python 2.7绘制一个3d绘图 当我尝试使用2D plot()函数中的颜色和标记绘制3d绘图时。我遇到了一个错误 因此,我尝试使用scatter()函数分别绘制直线和测量带有标记的点 当我创建图例条目时,我的图例如下所示 但是我不想有重复的图例条目 我希望我的图例条目以颜色分组,或 是否可以将标记和线条作为一个条目,以便在我的图例中只有5个条目 我发现了一个类似于()的问题,但它不能解决我的问题 import matplotlib as mpl from mpl_toolki

我正在用python 2.7绘制一个3d绘图

当我尝试使用2D plot()函数中的颜色和标记绘制3d绘图时。我遇到了一个错误

因此,我尝试使用scatter()函数分别绘制直线和测量带有标记的点

当我创建图例条目时,我的图例如下所示

但是我不想有重复的图例条目

  • 我希望我的图例条目以颜色分组,或
  • 是否可以将标记和线条作为一个条目,以便在我的图例中只有5个条目
我发现了一个类似于()的问题,但它不能解决我的问题

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

mpl.rcParams['legend.fontsize'] = 10

fig = plt.figure()
ax = fig.gca(projection='3d')
theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)
z = np.linspace(-2, 2, 100)
r = z**2 + 1
x = r * np.sin(theta)
y = r * np.cos(theta)
ax.plot(x, y, z, label='parametric curve 1')
ax.scatter(x, y, z, label='parametric curve 1',marker = 'o')
x = r * np.sin(theta + 1)
y = r * np.cos(theta + 1)
ax.plot(x, y, z, label='parametric curve 2')
ax.scatter(x, y, z, label='parametric curve 2',marker = 'o')
ax.legend()

plt.show()
我正在附加一个与我的问题类似的代码

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

mpl.rcParams['legend.fontsize'] = 10

fig = plt.figure()
ax = fig.gca(projection='3d')
theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)
z = np.linspace(-2, 2, 100)
r = z**2 + 1
x = r * np.sin(theta)
y = r * np.cos(theta)
ax.plot(x, y, z, label='parametric curve 1')
ax.scatter(x, y, z, label='parametric curve 1',marker = 'o')
x = r * np.sin(theta + 1)
y = r * np.cos(theta + 1)
ax.plot(x, y, z, label='parametric curve 2')
ax.scatter(x, y, z, label='parametric curve 2',marker = 'o')
ax.legend()

plt.show()
上面的代码给出了如下图


但是我希望我的图例只有两个条目

您是否使用标准Matplotlib库生成这些3D绘图?如果是这样,从文档()中的示例开始,它似乎可以正常工作:

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

mpl.rcParams['legend.fontsize'] = 10

fig = plt.figure()
ax = fig.gca(projection='3d')
theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)
z = np.linspace(-2, 2, 100)
r = z**2 + 1
x = r * np.sin(theta)
y = r * np.cos(theta)
ax.plot(x, y, z, label='parametric curve 1', marker='o')
x = r * np.sin(theta + 1)
y = r * np.cos(theta + 1)
ax.plot(x, y, z, label='parametric curve 2', marker='o')
ax.legend()

plt.show()

它解决了我的问题。。但是,是否可以使用颜色或相同的标签对图例的内容进行分组?能否显示一些代码或最低限度的工作示例,以便更清楚地了解您想要实现的目标?为什么需要单独的
plot
scatter
plot调用?如果
散点
中的点与绘图中的点相同,则在
绘图
调用中设置一个
标记
,如果它们不是相同的点,则可能应该以不同的方式标记它们,Matplotlib正在做正确的事情。如果可能有太多点无法为所有点设置标记,则可以使用
markevery
plot选项。否则,您需要向我们展示一个更具代表性的示例。我的问题在导入和使用matplotlib库时得到了解决。。我只是想知道我们在编辑图例条目和定制它们方面有多大的自由度