Python 在三维轴matplotlib中指定三维位置的图例
我有一个使用matplotlib的三维散点图 我想做的是把传说放在情节里。我已经阅读了,似乎只能选择预定义的位置或仅指定x和y坐标Python 在三维轴matplotlib中指定三维位置的图例,python,matplotlib,legend,Python,Matplotlib,Legend,我有一个使用matplotlib的三维散点图 我想做的是把传说放在情节里。我已经阅读了,似乎只能选择预定义的位置或仅指定x和y坐标 import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D, proj3d import numpy as np fig = plt.figure() ax = fig.add_subplot(111, projection='3d') theta = np.linspace(-
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D, proj3d
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)
z = np.linspace(-2, 2, 100)
r = z**2 + 1
x = 25 * r * np.sin(theta)
y = 350* r * np.cos(theta)
ax.plot(x, y, 70*z, label='parametric curve')
ax.plot(x*.6, y*0.5, 70*z, label='parametric curve 2')
f = lambda x,y,z: proj3d.proj_transform(x,y,z, ax.get_proj())[:2]
ax.legend(loc="lower left", bbox_to_anchor=f(70,1000,80),
bbox_transform=ax.transData)
plt.show()
有没有办法定位图例,指定3个坐标
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
#more code
ax.legend(loc=(0.5,0.5,0.5), frameon=0)
最后一行是我认为可能有效但显然无效的内容
这就是我现在所做的:
我试图将图例放置在轴内,有点像:
我使用ax.legend(loc=(0.15,0.65),frameon=0)通过反复试验达到了这个位置,因为轴旋转时,图例不会移动。问题是,我将做几个情节,因此我试图避免尝试和错误的方法
谢谢。要使用数据坐标将图例放置在三维绘图中,首先可以使用
mpl_toolkits.mplot3d.proj3d.proj_transform(x,y,z, ax.get_proj())
并将它们提供给图例的bbox\u to\u anchor
参数。然后将bbox\u变换
更改为数据坐标系,生成所需的绘图
下面将图例的左下角放置在数据坐标中的位置(701000,80)
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D, proj3d
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)
z = np.linspace(-2, 2, 100)
r = z**2 + 1
x = 25 * r * np.sin(theta)
y = 350* r * np.cos(theta)
ax.plot(x, y, 70*z, label='parametric curve')
ax.plot(x*.6, y*0.5, 70*z, label='parametric curve 2')
f = lambda x,y,z: proj3d.proj_transform(x,y,z, ax.get_proj())[:2]
ax.legend(loc="lower left", bbox_to_anchor=f(70,1000,80),
bbox_transform=ax.transData)
plt.show()
无法在三维坐标中定位图例。既然图例是一个2D对象,那么想要得到什么结果呢?谢谢。理想的结果是,使用轴坐标系,选择轴内图例框的位置。目前,将图例框放置在轴内的唯一方法是使用选项
center
及其变体作为loc
参数的值。但在我的情况下,这并不是我试图放置图例的地方。我认为使用可能是一个选项,但对于这样一个简单的任务来说似乎需要很多工作。预期的结果是什么?为什么ax.legend(loc=(0.5,0.5),frameon=0)
不能完全满足您的要求?