所以我试图制作一些情节,并试图使用cmap“jet”。它一直以viridis的形式出现,所以我在SE周围挖掘,尝试了一些非常简单的情节:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 100)
y = x
t = x
df = pd.DataFrame([x,y]).T
df.plot(kind="scatter", x=0, y=1, c=t, cmap="jet")
x = np.arange(0, 100.1)
y = x
t = x
df = pd.DataFrame([x,y]).T
df.plot(kind="scatter", x=0, y=1, c=t, cmap="jet")
对于这里发生的事情有什么想法吗?我可以告诉它与dataframe中字段的dtype有关(在第一组代码中添加了dypte=“float”并得到了与第二组代码相同的结果),但不明白为什么会是这种情况。
当然,如果我的代码没有问题,我真正想要的是一个解决方案。
2条答案
按热度按时间toiithl61#
它实际上似乎与Pandas(散点)图有关,正如你所指出的dtype浮动-一些更多的细节在最后。
解决方法是使用matplotlib。
最后,图看起来是一样的,但是
cmap="jet"
设置也适用于float dtype:代码:
或者使用pyplot instead of the Object Oriented Interface的较短版本(稍微接近简短的df.plot调用):
关于Pandas
df.plot
不遵循cmap设置的根本原因:我能找到的最接近的是pandas scatter plot
c
字符串、整型或类似数组
(虽然我不确定为什么t没有引用索引,而索引又是int)。
甚至
df.plot(kind="scatter", x=0, y=1, c=df.index.values.tolist(), cmap='jet')
福尔斯了viridis,而df.index.values.tolist()
显然只是int。更奇怪的是,pandas
df.plot
在默认情况下也使用matplotlib:使用plotting. backend选项指定的后端。默认情况下,使用matplotlib。
wi3ka0sx2#
看起来这是panda 1.5.0中的一个新bug。将panda恢复到1.4.4可以修复它。所以如果你不需要1.5.0本身,我建议重新安装1.4.4直到bug修复。