【发布时间】:2017-08-30 02:39:56
【问题描述】:
我希望了解如何在 Seaborn 中使用条形图来显示数据框中的值,而不是图表中的值
1) 我希望在数据框中显示一个字段的值,同时绘制另一个字段的值。例如,在下面,我正在绘制“tip”,但我想将“total_bill”的值放在每个条形上方的中心(即周五上方的 325.88, 周六以上1778.40等)
2) 有没有办法缩放条形的颜色,“total_bill”的最低值具有最亮的颜色(在本例中为星期五),而“total_bill”的最高值具有最暗的颜色。显然,当我进行缩放时,我会坚持使用一种颜色(即蓝色)。
谢谢!我敢肯定这很容易,但我很想念它..
虽然我看到其他人认为这是另一个(或两个)问题的重复,但我错过了如何使用不在图表中的值作为标签或阴影。怎么说呢,以total_bill为依据。很抱歉,但我无法根据这些答案弄清楚。
从下面的代码开始,
import pandas as pd
import seaborn as sns
%matplotlib inline
df=pd.read_csv("https://raw.githubusercontent.com/wesm/pydata- book/master/ch08/tips.csv", sep=',')
groupedvalues=df.groupby('day').sum().reset_index()
g=sns.barplot(x='day',y='tip',data=groupedvalues)
我得到以下结果:
临时解决方案:
for index, row in groupedvalues.iterrows():
g.text(row.name,row.tip, round(row.total_bill,2), color='black', ha="center")
在 shading 上,使用下面的示例,我尝试了以下操作:
import pandas as pd
import seaborn as sns
%matplotlib inline
df=pd.read_csv("https://raw.githubusercontent.com/wesm/pydata-book/master/ch08/tips.csv", sep=',')
groupedvalues=df.groupby('day').sum().reset_index()
pal = sns.color_palette("Greens_d", len(data))
rank = groupedvalues.argsort().argsort()
g=sns.barplot(x='day',y='tip',data=groupedvalues)
for index, row in groupedvalues.iterrows():
g.text(row.name,row.tip, round(row.total_bill,2), color='black', ha="center")
但这给了我以下错误:
AttributeError: 'DataFrame' 对象没有属性 'argsort'
所以我尝试了修改:
import pandas as pd
import seaborn as sns
%matplotlib inline
df=pd.read_csv("https://raw.githubusercontent.com/wesm/pydata-book/master/ch08/tips.csv", sep=',')
groupedvalues=df.groupby('day').sum().reset_index()
pal = sns.color_palette("Greens_d", len(data))
rank=groupedvalues['total_bill'].rank(ascending=True)
g=sns.barplot(x='day',y='tip',data=groupedvalues,palette=np.array(pal[::-1])[rank])
这让我有了
IndexError:索引 4 超出轴 0 的范围,大小为 4
【问题讨论】:
标签: python pandas matplotlib seaborn bar-chart