Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.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 如何使用numpy中的矩阵作为matplotlib中某些绘图函数的输入?_Python_Numpy_Matplotlib - Fatal编程技术网

Python 如何使用numpy中的矩阵作为matplotlib中某些绘图函数的输入?

Python 如何使用numpy中的矩阵作为matplotlib中某些绘图函数的输入?,python,numpy,matplotlib,Python,Numpy,Matplotlib,我想在三维坐标系中绘制四个点(或相互连接的线)。坐标存储在X、Y和Z中。例如,我有以下几行: from mpl_toolkits.mplot3d import Axes3D import numpy as np import matplotlib.pyplot as plt fig = plt.figure() ax = fig.gca(projection='3d') X = np.matrix('-1, 1, 1, 2') Y = np.matrix('1, 2, 4, 6') Z = n

我想在三维坐标系中绘制四个点(或相互连接的线)。坐标存储在X、Y和Z中。例如,我有以下几行:

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

fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.matrix('-1, 1, 1, 2')
Y = np.matrix('1, 2, 4, 6')
Z = np.matrix('3, 4, 2, 1')

ax.plot(X, Y, Z)
plt.show()
但在运行之后,将出现类型错误。我想这是因为numpy中矩阵类型的输入。有人知道如何轻松解决这个问题吗

错误消息:

Traceback (most recent call last):
  File "C:\Users\I077165\Desktop\tmp.py", line 11, in <module>
    ax.plot(X, Y, Z)
  File "C:\Python27\lib\site-packages\mpl_toolkits\mplot3d\axes3d.py", line 1312, in plot
    lines = Axes.plot(self, xs, ys, *args[argsi:], **kwargs)
  File "C:\Python27\lib\site-packages\matplotlib\axes.py", line 3848, in plot
    for line in self._get_lines(*args, **kwargs):
  File "C:\Python27\lib\site-packages\matplotlib\axes.py", line 323, in _grab_next_args
    for seg in self._plot_args(remaining, kwargs):
  File "C:\Python27\lib\site-packages\matplotlib\axes.py", line 284, in _plot_args
    raise ValueError, 'third arg must be a format string'
ValueError: third arg must be a format string
回溯(最近一次呼叫最后一次):
文件“C:\Users\I077165\Desktop\tmp.py”,第11行,在
轴图(X,Y,Z)
文件“C:\Python27\lib\site packages\mpl_toolkits\mplot3d\axes3d.py”,第1312行,在绘图中
线=轴。绘图(self、xs、ys、*args[argsi:]、**kwargs)
文件“C:\Python27\lib\site packages\matplotlib\axes.py”,第3848行,在绘图中
对于自身中的行。获取行(*args,**kwargs):
文件“C:\Python27\lib\site packages\matplotlib\axes.py”,第323行,在_grab\u next\u args中
对于seg in self.\u plot\u args(剩余,kwargs):
文件“C:\Python27\lib\site packages\matplotlib\axes.py”,第284行,在绘图参数中
raise VALUERROR,“第三个参数必须是格式字符串”
ValueError:第三个参数必须是格式字符串
谢谢。

对所有三个数据集使用
np.array()
而不是
np.matrix()

因此,对于X数据,
np.matrix('-1,1,2')
应该变成
np.array([-1,1,2])
对所有三个数据集使用
np.array()
而不是
np.matrix()


所以对于X数据,
np.matrix('-1,1,1,2')
应该变成
np.array([-1,1,1,2])

你能显示实际的错误吗?你的matplotlib版本是什么?@PierreGM:我刚刚在上面添加了错误消息。matplotlib的版本为1.1.0。谢谢你能显示实际的错误吗?你的matplotlib版本是什么?@PierreGM:我刚刚在上面添加了错误消息。matplotlib的版本为1.1.0。感谢注意数组必须是一维的(矩阵总是二维的)。因此,如果要直接绘制矩阵,则必须绘制X.A.ravel(),Y.A.ravel()(X.A只是矩阵的数组视图)。请注意,数组必须是一维的(并且矩阵始终是二维的)。因此,如果要直接绘制矩阵,则必须绘制X.A.ravel(),Y.A.ravel()(X.A只是矩阵的数组视图)。