我正在研究如何在 Seaborn 使用条形图来显示数据框中的值,而不是图表中的值。
'total_bill'
的值放在每个条形图的中心(比如,周五上方325.88,周六上方1778.40,等等)'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/1st-edition/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")
在 阴影上,使用下面的示例,我尝试了以下操作:
import pandas as pd
import seaborn as sns
%matplotlib inline
df = pd.read_csv("https://raw.githubusercontent.com/wesm/pydata-book/1st-edition/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/1st-edition/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超出了大小为4的坐标轴0的界限