簡體   English   中英

將顏色圖功能與 Pandas.DataFrame.Plot 一起使用

[英]Using Colormap feature with Pandas.DataFrame.Plot

from matplotlib import cm
a = pd.DataFrame(zip(ranFor.feature_importances_, trainSet.columns))
a = a.sort_values(by = [0], ascending= False)
tinydata = a.iloc[:25]
tinydata = tinydata[::-1]
tinydata.set_index([1], inplace=True)
cmap = cm.get_cmap('jet')
colors = cm.jet(np.linspace(0,1,len(tinydata)))
tinydata.plot(kind = 'barh', figsize = (15,10), title = 'Most Important 20 Features of the Initial Model',
                    grid = True, legend = False, color = colors)
plt.xlabel('Feature Importance')
plt.show()

大家好,這是我繪制條形圖 plot 的代碼。 問題是我無法弄清楚如何 plot colors 與顏色圖增加透明度,就像我附加到我的問題的圖表一樣。 謝謝你。

我提到的圖表

編輯

colors = cm.Reds(np.linspace(0,len(tinydata),1))
tinydata.plot(kind = 'barh', figsize = (15,10), title = 'Most Important 20 Features of the Initial Model',
                    grid = True, legend = False, color = colors)

我做了這樣的改變,我想它有效,但 colors 真的很蒼白。 我該如何改變這一點。

恐怕 pandas 不提供此功能。 盡管他們在文檔中說color可以采用數組,但這指的是不同的列,我們也可以在這個例子中看到:

from matplotlib import cm
import pandas as pd
from matplotlib import pyplot as plt
import numpy as np

tinydata = pd.DataFrame({"ind": list("ABCDEF"), 
                         "X": [10, 8, 7, 6, 4, 1], 
                         "Y": [5,  3, 4, 2, 3, 1],
                         "Z": [8,  5, 9, 6, 7, 3] })
tinydata = tinydata[::-1].set_index("ind")
n = len(tinydata)
colors = cm.Reds(np.linspace(0.2, 0.8, 3))
tinydata.plot(kind = 'barh', figsize = (15,10), title = 'Most Important 20 Features of the Initial Model',
                    grid = True, legend = True, color = colors)
plt.xlabel('Feature Importance')
plt.show()

Output: ![在此處輸入圖像描述

在 pandas 提供常用繪圖功能的情況下,這是有道理的。 因此,對於您的應用程序,它又回到了 pandas 無論如何都依賴的matplotlib的多功能性:

from matplotlib import cm
import pandas as pd
from matplotlib import pyplot as plt
import numpy as np

tinydata = pd.DataFrame({"ind": list("ABCDEF"), 
                         "X": [10, 8, 7, 6, 4, 1]})
tinydata = tinydata[::-1].set_index("ind")
n = len(tinydata)
colors = cm.Reds(np.linspace(0, 1, n))

fig, ax = plt.subplots(figsize = (15,10))
ax.barh(tinydata.index, tinydata.X, color = colors)
ax.grid(True)
ax.set_xlabel('Feature Importance')
ax.set_title('Most Important 20 Features of the Initial Model',)
plt.show()

Output: 在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM