【发布时间】:2017-09-28 09:14:43
【问题描述】:
我正在使用以下代码将 seaborn stripplot 映射到 seaborn PairGrid:
import pandas as pd
import seaborn as sns
df = (pd.read_csv(filepath_or_buffer='http://vincentarelbundock.github.io/' +
'Rdatasets/csv/ggplot2/diamonds.csv')
.drop(labels='Unnamed: 0', axis=1)
.astype(dtype={'cut': 'category', 'color': 'category',
'clarity': 'category'}))
agged = df.groupby(by=['cut', 'color']).mean().sort_index().reset_index()
g = sns.PairGrid(data=agged, x_vars=agged.columns[2:], y_vars=['cut', 'color'],
size=5, aspect=.65)
g.map(func=sns.stripplot, orient='h', size=10, palette='Blues_d')
默认情况下,“剪切”构面中的类别按字母顺序显示。但是,我想指定顺序:
['Fair', 'Good', 'Very Good', 'Premium', 'Ideal']
我已尝试为 stripplot 传递 'order' 参数,如下所示:
g.map(func=sns.stripplot, orient='h', size=10, palette='Blues_d',
order=['Fair', 'Good', 'Very Good', 'Premium', 'Ideal'])
虽然这会正确地对“cut”中的类别进行排序,但它根本不会在“color”方面绘制任何内容。我还尝试在相同的参数中指定“颜色”方面的顺序,如下所示:
g.map(func=sns.stripplot, orient='h', size=10, palette='Blues_d',
order=['Fair', 'Good', 'Very Good', 'Premium', 'Ideal', 'D', 'E', 'F',
'G', 'H', I'])
但是,这里的问题是 order 参数中的所有值都出现在“color”和“cut”方面。
是否可以在映射函数中指定一个顺序,从而在两组方面都进行正确的排序,并且没有重复?
['Fair', 'Good', 'Very Good', 'Premium', 'Ideal']
['D', 'E', 'F', 'G', 'H', I']
【问题讨论】:
-
我试图通过包含读取我的原始 df 的代码(这是来自 ggplot2 的示例钻石数据集)来修改我的原始帖子,以使其最小化、完整和可验证。希望这会有所帮助。抱歉 - 我刚开始在这里提问,所以请耐心等待,因为我一直在努力澄清!
标签: python seaborn categorical-data