Python Matplotlib';cmap&x27;vs';c';问题
我想画一些阻抗值,任务和代码都很简单Python Matplotlib';cmap&x27;vs';c';问题,python,pandas,numpy,matplotlib,Python,Pandas,Numpy,Matplotlib,我想画一些阻抗值,任务和代码都很简单xhertz_df是一个数据帧,在转换成numpy数组后,xhertz[0]是实部,xhertz[1]是虚部,xhertz[3]表示测量之间的时间 def xhertz_plot(xhertz_df): ax = plt.gca() xhertz = xhertz_df.T.to_numpy() ax.plot(xhertz[3], xhertz[0], 'green') ax.plot(xhertz[3], xhertz[1]
xhertz_df
是一个数据帧,在转换成numpy数组后,xhertz[0]
是实部,xhertz[1]
是虚部,xhertz[3]
表示测量之间的时间
def xhertz_plot(xhertz_df):
ax = plt.gca()
xhertz = xhertz_df.T.to_numpy()
ax.plot(xhertz[3], xhertz[0], 'green')
ax.plot(xhertz[3], xhertz[1], 'blue')
ax.scatter(xhertz[3], xhertz[0], cmap ='green')
ax.scatter(xhertz[3], xhertz[1], cmap ='blue')
ax.set_xlabel('Time Passed (in Minutes)')
plt.show()
我很困惑这个代码会出什么问题,因为它看起来很简单。但我得到了这个结果:
上面的线和点是蓝色和绿色的混合,尽管它应该是绿色的。只有蓝色的下一行有橙色(?!)点。这是怎么回事
编辑:
我发现了问题:我使用cmap
而不是c
作为散点图。但是对于在这两个概念上都有专长的人来说:为什么我会得到上面所示的结果?例如,橙色从何而来?如文件中所述:
Colormap
实例或注册的Colormap名称<仅当c
是浮点数组时,才使用code>cmap
由于您没有为argc
提供浮动列表,matplotlib忽略了您的cmap
,而是使用了第一和第二种默认颜色(蓝色,然后是橙色)
如果只需要单色,请注意c
参数的文档:
如果希望为所有点指定单一颜色,请使用color
关键字参数
或者,您可以将Axes.plot
与o
一起用于标记样式,而不是scatter
,例如ax.plot(x,y,'o',color='green')
或等效ax.plot(x,y,'og')
。这对于简单的地块更为典型;可以使用-
或o
显式设置线图或标记图
请注意,
cmap
通常用于希望每个点具有不同颜色的情况,例如希望为点着色以表示数据的另一个维度。在这种情况下,c
将表示数据的第三维,norm
将缩放数据,cmap
将是映射到该数据的颜色。有关该参数通常如何使用的示例,请参见from matplotlib。蓝色和橙色是第一种和第二种默认颜色。它只是忽略/不解析ax.plot
的第三个参数。您是指ax.scatter
的参数,对吗?线条图的颜色正确。所以它所做的就是忽略cmap='green'
参数?哦,你说得对,我把它们混在一起了。如文档中所述:“Colormap实例或注册的Colormap名称。仅当c是浮点数组时才使用cmap。”由于您没有为argc
提供浮点列表,因此忽略了cmap
。另请注意文档中关于c
参数的说明:“如果您希望为所有点指定单一颜色,请选择颜色关键字参数。”非常感谢,如果您将这两条注释复制粘贴在一起并作为答案给出,我将接受它并关闭问题。如果你不想对这样一个简单的问题给出一个“正确”的答案,我明白了。