Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Matplotlib 3D箭图使线条的颜色正确,但箭头的颜色错误_Python_Matplotlib - Fatal编程技术网

Python Matplotlib 3D箭图使线条的颜色正确,但箭头的颜色错误

Python Matplotlib 3D箭图使线条的颜色正确,但箭头的颜色错误,python,matplotlib,Python,Matplotlib,我试图在x、y和z方向绘制三个箭头的箭图,箭头颜色为绿色、红色和蓝色。出于某种原因,线条的颜色是正确的,但箭头的颜色是错误的,我不知道如何修复。这是我的密码: import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = fig.gca(projection='3d') cols = ['r', 'g', 'b'] quive

我试图在x、y和z方向绘制三个箭头的箭图,箭头颜色为绿色、红色和蓝色。出于某种原因,线条的颜色是正确的,但箭头的颜色是错误的,我不知道如何修复。这是我的密码:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.gca(projection='3d')
cols = ['r', 'g', 'b']

quivers = ax.quiver([0,0,0],[0,0,0],[0,0,0],[1,0,0],[0,1,0],[0,0,1], colors=cols)

ax.set_xlim3d([-2.0, 2.0])
ax.set_xlabel('X')

ax.set_ylim3d([-2.0, 2.0])
ax.set_ylabel('Y')

ax.set_zlim3d([-2, 2])
ax.set_zlabel('Z')
plt.show()

在<代码>箭袋中,如果将颜色列表指定为选项<代码>颜色=…,则颜色循环对所有线段有效,包括箭头的所有部分

要获得3个不同颜色的箭头,可以使用3个
quiver
语句,每个语句都有不同的颜色

方法1

ax.quiver([0],[0],[0],[1],[0],[0], colors='r')
ax.quiver([0],[0],[0],[0],[1],[0], colors='g')
ax.quiver([0],[0],[0],[0],[0],[1], colors='b')
方法2

fr = [(0,0,0), (0,0,0), (0,0,0)]
to = [(1,0,0), (0,1,0), (0,0,1)]
cr = ["red", "green", "blue"]
for (from_, to_, colr_) in zip(fr,to,cr):
    ax.quiver(*from_, *to_, colors=colr_)

当你只有3支箭时,为什么要列出6支箭袋?你检查了吗?它讨论了颜色这对我来说就像一个bug,如果颜色列表被指定为选项
colors=..
,那么颜色循环对所有线段都有效,包括箭头的所有部分。谢谢,我使用cols=['r','g','b','r','r','g','g','b','b'解决了我的问题现在可以正确地循环颜色(假设只画了三条线)。@TomMcLean很好的尝试。请检查我的最新答案。谢谢,这是一个更好的方式!