第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python中相同類別的固定顏色的條形圖

python中相同類別的固定顏色的條形圖

大話西游666 2021-11-30 10:27:32
我有一個簡單的dataframe如下:    Condition   State     Value0       A        AM      0.7756511       B        XP      0.7002652       A       HML      0.6883153       A     RMSML      0.6669564       B      XAD       0.6360145       C       VAP      0.5428976       C     RMSML      0.4866647       B      XMA       0.4827428       D      VCD       0.469553現(xiàn)在我想要一個帶有每個值的條形圖,如果條件相同,則每個狀態(tài)都有相同的顏色。我嘗試了以下python代碼:Data_Control = pd.ExcelFile('Bar_plot_example.xlsx') df_Control= Data_Control.parse('Sheet2')# my dataframes = pd.Series(df_Control.iloc[:,2].values, index=df_Control.iloc[:,1])colors = {'A': 'r', 'B': 'b', 'C': 'g', 'D':'k'}s.plot(kind='barh', color=[colors[i] for i in df_Control['Condition']])plt.legend()但是我無法為每種情況正確獲得圖例。我得到以下情節(jié)。那么我應(yīng)該如何為每個條件獲得正確的圖例?非常感謝任何幫助,謝謝。
查看完整描述

2 回答

?
浮云間

TA貢獻(xiàn)1829條經(jīng)驗 獲得超4個贊

您可以直接從數(shù)據(jù)中創(chuàng)建圖例的句柄和標(biāo)簽:


labels = df['Condition'].unique()

handles = [plt.Rectangle((0,0),1,1, color=colors[l]) for l in labels]

plt.legend(handles, labels, title="Conditions")

完整示例:


u = """    Condition   State     Value

0       A        AM      0.775651

1       B        XP      0.700265

2       A       HML      0.688315

3       A     RMSML      0.666956

4       B      XAD       0.636014

5       C       VAP      0.542897

6       C     RMSML      0.486664

7       B      XMA       0.482742

8       D      VCD       0.469553"""


import io

import pandas as pd

import matplotlib.pyplot as plt



df = pd.read_csv(io.StringIO(u),sep="\s+" )

s = pd.Series(df.iloc[:,2].values, index=df.iloc[:,1])

colors = {'A': 'r', 'B': 'b', 'C': 'g', 'D':'k'}

s.plot(kind='barh', color=[colors[i] for i in df['Condition']])


labels = df['Condition'].unique()

handles = [plt.Rectangle((0,0),1,1, color=colors[l]) for l in labels]

plt.legend(handles, labels, title="Conditions")


plt.show()

http://img1.sycdn.imooc.com//61a58c3c0001650904520334.jpg

查看完整回答
反對 回復(fù) 2021-11-30
?
達(dá)令說

TA貢獻(xiàn)1821條經(jīng)驗 獲得超6個贊

因此,我沒有過多地直接從 Pandas 繪圖,但是您必須訪問句柄并使用它來構(gòu)建可以傳遞給plt.legend.


s.plot(kind='barh', color=[colors[i] for i in df['Condition']])

# Get the original handles.

original_handles = plt.gca().get_legend_handles_labels()[0][0]


# Hold the handles and labels that will be passed to legend in lists.

handles = []

labels = []

conditions = df['Condition'].values

# Seen conditions helps us make sure that each label is added only once.

seen_conditions = set()

# Iterate over the condition and handle together.

for condition, handle in zip(conditions, original_handles):

    # If the condition was already added to the labels, then ignore it.

    if condition in seen_conditions:

        continue

    # Add the handle and label.

    handles.append(handle)

    labels.append(condition)

    seen_conditions.add(condition)


# Call legend with the stored handles and labels.

plt.legend(handles, labels)


查看完整回答
反對 回復(fù) 2021-11-30
  • 2 回答
  • 0 關(guān)注
  • 274 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號