我不熟悉使用Python进行绘图,并且无法真正找到问题的答案:如何在matplotlib中获得笛卡尔坐标平面?我的意思是垂直参考线(坐标轴)以箭头结束,在原点(0,0)处相交,原点位于图的中心.
考虑一下做高中地理的飞机,以下是我需要实现的完美范例:
我想从 Python 创建 3D 坐标变换图。例如,我想创建以下图像(由 TikZ 静态生成):
经过一番搜索,我找到了以下程序:
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.patches import FancyArrowPatch
from mpl_toolkits.mplot3d import proj3d
class Arrow3D(FancyArrowPatch):
def __init__(self, xs, ys, zs, *args, **kwargs):
FancyArrowPatch.__init__(self, (0, 0), (0, 0), *args, **kwargs)
self._verts3d = xs, ys, zs
def draw(self, renderer):
xs3d, ys3d, zs3d = self._verts3d
xs, ys, zs = proj3d.proj_transform(xs3d, ys3d, zs3d, renderer.M)
self.set_positions((xs[0], ys[0]), (xs[1], ys[1]))
FancyArrowPatch.draw(self, renderer)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d') …
Run Code Online (Sandbox Code Playgroud) 我想在 python 中绘制 3d 长方体。
输入:center(中心点有3个点)radius(3个半径值,每个维度一个)
理想情况下,它应该是一个线框图(我需要看看里面有什么)。我不太确定如何去做。使用 python matplotlib 或 Mayavi 就可以了。
谢谢!
到目前为止,我已经尝试了以下代码..但这只绘制了一个立方体
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
from itertools import product, combinations
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.set_aspect("equal")
#draw cube
r = [-1, 1]
for s, e in combinations(np.array(list(product(r,r,r))), 2):
if np.sum(np.abs(s-e)) == r[1]-r[0]:
ax.plot3D(*zip(s,e), color="b")
plt.show()
Run Code Online (Sandbox Code Playgroud)
这段代码中缺少的是它只是一个立方体(不是长方体)并且它仅以 0 为中心(我实际上想提供中心)
经过一番思考,我想出了这个。这似乎是正确的。如果您认为它不正确,请告诉我...这是无需安装 myavi、pygame、povray 的最简单方法(我很难在 ipython、conda、我的 Windows 笔记本电脑上安装这些)
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
from itertools …
Run Code Online (Sandbox Code Playgroud)