所以我試圖制作一些情節并試圖使用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")

對這里發生的事情有任何想法嗎?我可以說它與資料框中欄位的 dtype 有關(將 dypte="float" 添加到第一組代碼并得到與第二組代碼相同的結果),但看不到為什么會這樣。
當然,如果我的代碼沒有問題,我真正想要的是一種解決方法。
uj5u.com熱心網友回復:
它實際上似乎與熊貓(散點圖)圖有關,并且正如您指出的那樣 dtype float - 最后還有更多細節。
一種解決方法是使用 matplotlib。
該圖最終看起來相同,但該cmap="jet"設定也適用于 float dtype:

代碼:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
x = np.arange(0, 100.1)
y = x
t = x
df = pd.DataFrame([x,y]).T
fig, ax = plt.subplots(1,1)
sc_plot = ax.scatter(df[0], df[1], c=t, cmap="jet")
fig.colorbar(sc_plot)
ax.set_ylabel('1')
ax.set_xlabel('0')
plt.show()
或者使用pyplot 而不是 Object Oriented Interface的較短版本(更接近簡短的 df.plot 呼叫):
df = pd.DataFrame([x,y]).T
sc_plot = plt.scatter(df[0], df[1], c=t, cmap="jet")
plt.colorbar(sc_plot)
plt.ylabel('1')
plt.xlabel('0')
plt.show()
df.plot關于 pandas不遵循 cmap 設定的根本原因:
我能找到的最接近的是熊貓散點圖 c需要
str、int 或類似陣列
(雖然我不確定為什么 t 不是指再次為 int 的索引)。
Evendf.plot(kind="scatter", x=0, y=1, c=df.index.values.tolist(), cmap='jet')回退到 viridis,而df.index.values.tolist()顯然只是 int。
更奇怪的是,熊貓df.plot也默認使用 matplotlib:
使用選項 plotting.backend 指定的后端。默認情況下,使用 matplotlib。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/512074.html
下一篇:節點模塊檔案在被忽略時不斷推送
