带有数据的图表,显示相应的颜色

时间:2019-04-02 01:28:39

标签: python-3.x pandas matplotlib colors

C/C++

Data

Graph

我的意图是绘制一个显示颜色与高度的条形图。我设法做到了。但是,我希望每个条都显示各自的颜色。根据数据集,我希望第一个条显示红色...等等。我尝试添加颜色,但它仍然只显示1种颜色。

2 个答案:

答案 0 :(得分:2)

诀窍是创建一个多列数据框并使用stacked=True选项。

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

df = pd.DataFrame({"Height" : [5,3,6,4],
                   "Color" : ["Blue", "Green", "Red", "Yellow"]})

color = []
for key,value in df.iterrows():
    if(value['Color']=='Blue'):
       color.append('b')
    elif(value['Color']=='Green'):
       color.append('g')
    elif(value['Color']=='Red'):
       color.append('r')
    elif(value['Color']=='Yellow'):
       color.append('y')
    elif(value['Color']=='Orange'):
       color.append('o')
    else:
       color.append('k')

df2 = pd.DataFrame(np.diag(df["Height"]), columns=df["Color"], index=df["Color"])
ax = df2.plot(kind='bar', title="Correlation", color=color, legend=True, 
              fontsize=12, stacked=True)
ax.set_xlabel("Colors", fontsize=12)
ax.set_ylabel("Height", fontsize=12)

plt.show()

enter image description here

答案 1 :(得分:0)

您不必创建if / else条件:

import pandas as pd
df = pd.DataFrame({"Height" : [5,3,6,4],
                   "Color" : ["Blue", "Green", "Red", "Yellow"]})

df.set_index('Color').Height.plot(kind='bar',color=df.Color)

enter image description here