使用具有特定特征的 seaborn/matplotlib 创建条形图
Create a bar chart using seaborn/matplotlib with specific characteristics
我想创建,而不是通过以下代码生成的线图:
import pandas as pd
import seaborn as sns
d = {'P': {0: 'BO', 1: 'BO', 2: 'BO', 3: 'BO', 4: 'BO'},
'M': {0: 'NB', 1: 'LR', 2: 'SVM', 3: 'SGD', 4: 'RF'},
'PP': {0: '0.72', 1: '0.71', 2: '0.85', 3: '0.54', 4: '0.75'},
'R': {0: '0.82', 1: '0.62', 2: '0.64', 3: '0.54', 4: '0.70'},
'F': {0: '0.71', 1: '0.52', 2: '0.76', 3: '0.73', 4: '0.65'},
'A': {0: '0.91', 1: '0.91', 2: '0.92', 3: '0.92', 4: '0.92'},
'D': {0: 'A', 1: 'A', 2: 'A', 3: 'B', 4: 'B'}}
df = pd.DataFrame(d)
df2 = df.melt(['P', 'M', 'D'])
g = sns.relplot(data=df2,
x='M',
y="value",
hue='P',
style='D',
col="variable",
col_wrap=2,
col_order = ['PP', 'R', 'F', 'A'],
kind="line",
facet_kws={'sharey': False, 'sharex': False},
height=3,
)
g._legend.set_bbox_to_anchor([0.9, 1])
g._legend._loc=2
一个条形图,具有相同的特征(唯一的区别是条形图而不是线条)。我不能使用 seaborn
来做到这一点,因为唯一接受的 kind
值是 lines
和 scatter
。
如果我使用 matplotlib
,我会得到一个错误,因为我无法设置 style='D'
。我希望你能提供一些关于如何创建这样的情节的建议。
Seaborn 有 catplot()
,类似于 relplot()
,但分类图包括 kind='bar'
:
df2.value = df2.value.astype(float)
g = sns.catplot(
data=df2,
x='M',
y='value',
hue='P',
col='variable',
col_wrap=2,
col_order = ['PP', 'R', 'F', 'A'],
kind='bar',
facet_kws={'sharey': False, 'sharex': False},
height=3,
)
我想创建,而不是通过以下代码生成的线图:
import pandas as pd
import seaborn as sns
d = {'P': {0: 'BO', 1: 'BO', 2: 'BO', 3: 'BO', 4: 'BO'},
'M': {0: 'NB', 1: 'LR', 2: 'SVM', 3: 'SGD', 4: 'RF'},
'PP': {0: '0.72', 1: '0.71', 2: '0.85', 3: '0.54', 4: '0.75'},
'R': {0: '0.82', 1: '0.62', 2: '0.64', 3: '0.54', 4: '0.70'},
'F': {0: '0.71', 1: '0.52', 2: '0.76', 3: '0.73', 4: '0.65'},
'A': {0: '0.91', 1: '0.91', 2: '0.92', 3: '0.92', 4: '0.92'},
'D': {0: 'A', 1: 'A', 2: 'A', 3: 'B', 4: 'B'}}
df = pd.DataFrame(d)
df2 = df.melt(['P', 'M', 'D'])
g = sns.relplot(data=df2,
x='M',
y="value",
hue='P',
style='D',
col="variable",
col_wrap=2,
col_order = ['PP', 'R', 'F', 'A'],
kind="line",
facet_kws={'sharey': False, 'sharex': False},
height=3,
)
g._legend.set_bbox_to_anchor([0.9, 1])
g._legend._loc=2
一个条形图,具有相同的特征(唯一的区别是条形图而不是线条)。我不能使用 seaborn
来做到这一点,因为唯一接受的 kind
值是 lines
和 scatter
。
如果我使用 matplotlib
,我会得到一个错误,因为我无法设置 style='D'
。我希望你能提供一些关于如何创建这样的情节的建议。
Seaborn 有 catplot()
,类似于 relplot()
,但分类图包括 kind='bar'
:
df2.value = df2.value.astype(float)
g = sns.catplot(
data=df2,
x='M',
y='value',
hue='P',
col='variable',
col_wrap=2,
col_order = ['PP', 'R', 'F', 'A'],
kind='bar',
facet_kws={'sharey': False, 'sharex': False},
height=3,
)