from mpl_toolkits.mplot3d.axes3d import Axes3D
# from mpl_toolkits.mplot3d import proj3d
# import matplotlib as mpl
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(5,5),facecolor="y")
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)
"""
Scaling is done from here...
"""
x_scale=1
y_scale=2
z_scale=1
# scale=np.diag([x_scale, y_scale, z_scale, 1.0])
# scale=scale*(1.0/scale.max())
# scale[3,3]=1.0
scale = np.diag([x_scale, y_scale, z_scale, 0.1]) # 1.0
scale = scale * (1.0 / scale.max())
scale[3, 3] = 0.3
def short_proj():
return np.dot(Axes3D.get_proj(ax), scale)
ax.get_proj=short_proj
"""
to here
"""
ax.plot(z, y, x, label='parametric curve')
ax.legend()
# ax.dist=15
plt.show()
怎样能在不改变三维坐标区域的大小、不设置ax.dist的情况下增大图中间白色区域的大小。现在那个曲线超出了白色区域是不显示的,要的效果是不管曲线在三维坐标轴的哪个地方经过都要显示出来。最初目的是在pyqt里面利用matplotlib画实时更新的三维散点图,我调整x,y,x的比例然后将坐标区域放大来达到减小空白区域的效果,但是这样设置过后,坐标点只在中间的白色区域显示。tight_layout=True可以让自动让白色区域变大,但是每次清除坐标点后重新画坐标点上去会自动调整大小导致整个图形跳动。
self.figure = plt.Figure(figsize=(width, height), tight_layout=True, facecolor="white")
self.canvas = FigureCanvas(self.figure)
```python
```
问题已解决,‘plt.subplots_adjust(left=0, right=1, bottom=-1, top=2)’
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。