我想在SQUARE图上画线.
尺度x-axis和y-axis应该是相同的.
例如,x的范围是0到10,屏幕上是10厘米.y必须也在0到10之间,也必须是10厘米.
即使我弄乱窗口大小,也必须保持SQUARE形状.
目前,我的图表与窗口大小一起缩放.
我怎么能实现这个目标?
更新:
我尝试了以下,但它没有用.
plt.xlim(-3, 3)
plt.ylim(-3, 3)
plt.axis('equal')
Run Code Online (Sandbox Code Playgroud) import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
Run Code Online (Sandbox Code Playgroud)
设置宽高比适用于2d图:
ax = plt.axes()
ax.plot([0,1],[0,10])
ax.set_aspect('equal','box')
Run Code Online (Sandbox Code Playgroud)
但不适用于3D:
ax = plt.axes(projection='3d')
ax.plot([0,1],[0,1],[0,10])
ax.set_aspect('equal','box')
Run Code Online (Sandbox Code Playgroud)
是否有不同的3d案例语法,或者它没有实现?
我试图从海底500米乘40米部分的声纳数据绘制海底的3D图像.我正在使用带有Axes3D的matplotlib/mplot3d,我希望能够更改轴的纵横比,以便x&y轴可以缩放.生成数据而不是实际数据的示例脚本是:
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
# Create figure.
fig = plt.figure()
ax = fig.gca(projection = '3d')
# Generate example data.
R, Y = np.meshgrid(np.arange(0, 500, 0.5), np.arange(0, 40, 0.5))
z = 0.1 * np.abs(np.sin(R/40) * np.sin(Y/6))
# Plot the data.
surf = ax.plot_surface(R, Y, z, cmap=cm.jet, linewidth=0)
fig.colorbar(surf)
# Set viewpoint.
ax.azim = -160
ax.elev = 30
# Label axes.
ax.set_xlabel('Along track (m)')
ax.set_ylabel('Range (m)')
ax.set_zlabel('Height (m)')
# …Run Code Online (Sandbox Code Playgroud) 这是一个准系统的例子:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
f = fig.add_subplot(2, 1, 1, projection='3d')
t = fig.add_subplot(2, 1, 2, projection='3d')
# axes
for d in {f, t}:
d.plot([-1, 1], [0, 0], [0, 0], color='k', alpha=0.8, lw=2)
d.plot([0, 0], [-1, 1], [0, 0], color='k', alpha=0.8, lw=2)
d.plot([0, 0], [0, 0], [-1, 1], color='k', alpha=0.8, lw=2)
f.dist = t.dist = 5.2 # 10 is default
plt.tight_layout()
f.set_aspect('equal')
t.set_aspect('equal')
r = 6
f.set_xlim3d([-r, r])
f.set_ylim3d([-r, r])
f.set_zlim3d([-r, r])
t.set_xlim3d([-r, …Run Code Online (Sandbox Code Playgroud) 我正在尝试将2D数据绘制到3D轴上.我使用了3D形状,ax.plot_surface但是我无法使2D数据与轴墙齐平ax.plot.
这是一个精简的示例代码,显示了我对2D数据的问题:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# Generate Example Data
x = [0.04,0,-0.04]
y = [0.04,0,-0.04]
z = [0.04,0,-0.04]
# Start plotting environment
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# Plot 3 lines positioned against the axes "walls"
ax.plot(x,y,-0.08,zdir='z',c='r')
ax.plot(x,z, 0.08,zdir='y',c='g')
ax.plot(y,z,-0.08,zdir='x',c='b')
# Label each axis
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
# Set each axis limits
ax.set_xlim([-0.08,0.08])
ax.set_ylim([-0.08,0.08])
ax.set_zlim([-0.08,0.08])
# Equally stretch all axes
ax.set_aspect("equal")
# Set plot size for saving to disk …Run Code Online (Sandbox Code Playgroud) 我有一个三列的数据目录,我想制作一个3D图,加上每个轴的投影作为另外两个轴平面中的投影轮廓.到目前为止,我可以使用3D图matplotlib,但仍然没有显示数据属性的任何内容.
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
from numpy import *
data=loadtxt('test.cat')
X=data[:,0]
Y=data[:,1]
Z=data[:,2]
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(X, Y, Z, c='r', marker='.')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
Run Code Online (Sandbox Code Playgroud)
我怎样才能绘制每个平面中数据的投影colorbar?
我如何结合这些陈述:
pyplot.axis([1234.0, 1773.0, 497.0, 1362.0])
pyplot.axis('equal')
Run Code Online (Sandbox Code Playgroud)
我只想定义轴的限制,但在两个方向上具有相同的比例。
PS:我尝试过pyplot.axis([1234.0, 1773.0, 497.0, 1362.0], 'equal'),但没有成功。