我正尝试在球体内绘制一个箭头,代码如下
u, v = np.mgrid[0:2*np.pi:20j, 0:np.pi:10j]
x = np.cos(u)*np.sin(v)
y = np.sin(u)*np.sin(v)
z = np.cos(v)
fig = pl.figure(figsize=(20,15))
ax = fig.gca(projection='3d')
ax.quiver(0, 0, 0,blocx[0], blocy[0], blocz[0],color="b",linewidth=5)
ax.plot_wireframe(x, y, z, color ='#15B05E')
ax.view_init(30, 70)
pl.show()
这里的blockx,y和z是我的一些数据,结果是:
但是我希望箭头像一个圆锥体,而且尺寸要小一些,我该怎么做呢?
1条答案
按热度按时间hzbexzde1#
其中一条评论说箭筒没有这个功能,这是正确的。解决这个问题的一个方法是制作一个为你绘制箭头的函数。在这个函数中你可以自定义箭头的格式。
这是我的代码的输出。它只沿着z轴绘制一个箭头,但是顶点可以是任意大小的正值或负值。可以很容易地改变箭头,使其沿着不同的轴下降,但是给它一个任意的方向会变得复杂得多。
注意:使用
fig.gca()
会给你以下的反对警告。要避免这种情况,你应该调用ax=plt.subplot(projection='3d')
。Matplotlib弃用警告:在Matplotlib 3.4中不推荐使用带关键字参数的gca()。从两个次要版本开始,gca()将不带关键字参数。gca()函数只能用于获取当前轴,或者如果不存在轴,则使用默认关键字参数创建新轴。要使用非默认参数创建新轴,请使用plt. axes()或plt. subplot(). ax = fig. gca(projection ='3d ')
代码
(Keep滚动查看参数的详细信息)
生成箭头所需传递的参数为
axe
(轴)和apex
,apex
是沿z轴的值,用于指定箭头的终点。col
参数控制箭头的颜色,默认值为蓝色。此外,可以指定箭头的高度/宽度。2这也可以通过为每个值指定一个比率来控制。3比率应用于箭头的大小并相应地缩放箭头。这能回答你的问题吗?