homicide_scatter_df.plot.scatter(x='Homicide',y='Area Name',s = 225,
c = 'Population/mil', colormap='viridis',
sharex=False)
上面的代碼有效,我得到了散點圖,其中的點根據區域人口改變顏色。
fig, ax = plt.subplots(figsize=(10, 6))
ax.scatter(x = homicide_scatter_df['Homicide'],
y = homicide_scatter_df['Area Name'],
s = 225,
c = 'Population/mil', colormap='viridis',
sharex=False)
但是,上面的代碼會引發以下錯誤c:
ValueError:'c' 引數必須是顏色、顏色序列或數字序列,而不是 Population/mil
更新:修復列問題后,顏色欄仍然存在問題。
在 pandas 圖表的右側,我得到一個帶有“Population/mil”標簽的顏色范圍條。matplotlib 版本不顯示具有一系列顏色的相同顏色條。是否可以使用第二種方法獲得相同的顏色條?
更新:我現在有顏色條,但顏色與資料的順序相反。
norm = colors.Normalize(homicide_scatter_df['Population/mil'].max(), homicide_scatter_df['Population/mil'].min())
plt.xticks(rotation=90)
fig.colorbar(cm.ScalarMappable(norm=norm,cmap='YlGnBu'), ax=ax)
上面的代碼顯示了正確位置和正確值的欄。但是,顏色與點顏色的順序相反。
如何更改顏色以正確上升?
uj5u.com熱心網友回復:
在 pandas 情節中,c='Population/mil'因為 pandas 已經知道這是homicide_scatter_df.
在 matplotlib 圖中,您需要像對xand那樣傳遞完整的列y:
ax.scatter(x=homicide_scatter_df['Homicide'],
y=homicide_scatter_df['Area Name'],
c=homicide_scatter_df['Population/mil'], # actual column, not column name
s=225, colormap='viridis', sharex=False)
或者,如果您指定data源,那么您可以只傳遞類似于 pandas 的列名:
data:如果給定,引數也可以接受s解釋為的字串data[s]。
matplotlib 中的顏色圖處理也不同。改為手動colormap呼叫cmap:colorbar
ax.scatter(data=homicide_scatter_df, # define data source
x='Homicide', # column names
y='Area Name',
c='Population/mil',
cmap='viridis', # colormap -> cmap
s=225, sharex=False)
plt.colorbar(label='Population/mil') # manually add colorbar
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/451430.html
標籤:Python 熊猫 数据框 matplotlib 散点图
