簡體   English   中英

在 python 的 plot 的 pandas 的 dataframe 中切換一個給定條的顏色

[英]switch color of one given bar in a bar plot of a pandas dataframe in python

我有給定 dataframe 的以下 barh plot:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.DataFrame({"first":np.arange(1,6), "second":np.arange(2,7)}) 
df.plot(kind="barh", color=tuple(["g", "b"]))

df plot 的圖像

我想切換到自定義顏色,即“#af12be22”,對應於 df.loc[0,"a"] 的條,即最短的綠色條。

理想情況下,我希望有一種簡單的方法來控制每個單元格的 colors,比如將 dataframe 作為 .plot 方法的“顏色”參數的參數。 就像是:

df = pd.DataFrame({"first":np.arange(1,6), "second":np.arange(2,7)}) 
df_colors = pd.DataFrame({"first":["#af12be22"] + 4*["g"], "second":5*["b"]})  
df.plot(kind="barh", color=df_color)

是否可以?

我查看了 pandas.DataFrame.plot 文檔,發現“顏色”似乎只允許從 dataframe 的一列到另一列的顏色變化,但不允許在一列內變化。 我試圖將 df_color 更改為 np.array 或列表,但都沒有幫助,並顯示以下錯誤消息:

ValueError: Invalid color ['#af12be22' 'g' 'g' 'g' 'g']

我確實理解錯誤,但想知道是否有簡單的解決方法

以下更改(更新代碼)

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.DataFrame({"first":np.arange(1,6), "second":np.arange(2,7)}) 
df.plot(kind="barh", color={"first":["#af12be22"] + 4*["g"], "second":5*["b"]})

會給你我認為你正在尋找的東西。 希望這可以幫助。

在此處輸入圖像描述

暫無
暫無

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

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