barplot
提供了 orient
参数来交换栏方向:
import pandas as pd, numpy as np, seaborn as sns
df = pd.DataFrame(data=np.random.randint(10, size=(3, 5)), columns=[*"abcde"])
# a b c d e
# 0 8 6 5 2 3
# 1 0 0 0 1 8
# 2 6 9 5 6 9
sns.barplot(data=df, orient="h")
在
objects
API 中,似乎我们现在应该 add
标记层的方向,但我不确定如何:
import seaborn.objects as so
so.Plot(data=df).add(so.Bar(), so.Agg(), orient="h")
# ValueError: No grouping variables are present in dataframe
使用新的
objects
API 更改栏方向的惯用方法是什么?
您可以使用对象界面绘制水平条,并且
add
确实有一个orient
参数(尽管它接受x
/y
而不是v
/h
,因为前者可以更好地概括所有类型的标记)。
但是目前这里不支持绘制“宽格式”数据。
宽格式数据的问题在于,不同类型的图会以不同的方式使用数据集的维度。使用函数接口,每种函数类型都可以指定映射(例如,
barplot
将列映射到x
(或水平条的y
),而lineplot
将索引映射到x
。
我不知道对象接口是否会在某个时候支持这一点,但目前不支持。您需要将数据帧转换为长格式并显式分配 x/y。