多个条形图的单个图例matplotlib

沙提拉茹国王

我有一个使用熊猫数据框的不同列创建的多个条形图。

fig1 = plt.figure()
ypos = np.arange(len(dframe))

colorscheme = seaborn.color_palette(n_colors=4)

accuracyFig = fig1.add_subplot(221)
accuracyFig.bar(ypos,dframe['accuracy'], align = 'center', color=colorscheme)
accuracyFig.set_xticks([0,1,2,3])
accuracyFig.set_ylim([0.5,1])

sensitivityFig = fig1.add_subplot(222)
sensitivityFig.bar(ypos, dframe['sensitivity'], align = 'center',color=colorscheme )
sensitivityFig.set_xticks([0,1,2,3])
sensitivityFig.set_ylim([0.5,1])

specificityFig = fig1.add_subplot(223)
specificityFig.bar(ypos, dframe['specificity'], align = 'center', color=colorscheme)
specificityFig.set_xticks([0,1,2,3])
specificityFig.set_ylim([0.5,1])

precisionFig = fig1.add_subplot(224)
precisionFig.bar(ypos, dframe['precision'], align = 'center', color=colorscheme)
precisionFig.set_xticks([0,1,2,3])
precisionFig.set_ylim([0.5,1])

dframe带有整数值的pandas数据框在哪里这向我输出下图在此处输入图片说明

每种颜色对应一种分类器模型-perceptron,C2,C3 and C4存储在熊猫中dframe['name']

现在,我想为整个图形绘制一个图例。我尝试了以下

leg = plt.legend(dframe['name'])

关于如何绘制单个图例并将其放置在2列中的图形的任何帮助。

但这给了我以下几点在此处输入图片说明

这是我的数据框

                     name        accuracy     sensitivity     specificity       precision
0              perceptron  0.820182164169  0.852518881235  0.755172413793  0.875007098643
1  DecisionTreeClassifier             1.0             1.0             1.0             1.0
2    ExtraTreesClassifier             1.0             1.0             1.0             1.0
3  RandomForestClassifier  0.999796774253  0.999889340748  0.999610678532  0.999806362379
r

好吧,首先,您的表不是整齐的格式(请参阅此处:http : //vita.had.co.nz/papers/tidy-data.pdf)。

以整齐(或长)格式放置表格具有巨大的优势,即使用seaborn进行绘制变得非常容易(除其他优势外):

df # yours
                     name        accuracy     sensitivity     specificity       precision
0              perceptron  0.820182164169  0.852518881235  0.755172413793  0.875007098643
1  DecisionTreeClassifier             1.0             1.0             1.0             1.0
2    ExtraTreesClassifier             1.0             1.0             1.0             1.0
3  RandomForestClassifier  0.999796774253  0.999889340748  0.999610678532  0.999806362379

将其转换为长格式(或整齐):

df2 = pd.melt(df, value_vars=["accuracy", "sensitivity", "specificity", "precision"], id_vars="name")
df2
                      name     variable     value
0               perceptron     accuracy  0.820182
1   DecisionTreeClassifier     accuracy  1.000000
2     ExtraTreesClassifier     accuracy  1.000000
3   RandomForestClassifier     accuracy  0.999797
4               perceptron  sensitivity  0.852519
5   DecisionTreeClassifier  sensitivity  1.000000
6     ExtraTreesClassifier  sensitivity  1.000000
7   RandomForestClassifier  sensitivity  0.999889
8               perceptron  specificity  0.755172
9   DecisionTreeClassifier  specificity  1.000000
10    ExtraTreesClassifier  specificity  1.000000
11  RandomForestClassifier  specificity  0.999611
12              perceptron    precision  0.875007
13  DecisionTreeClassifier    precision  1.000000
14    ExtraTreesClassifier    precision  1.000000
15  RandomForestClassifier    precision  0.999806

然后,只需将您想要的内容画成一行+两行即可使其更清晰:

g = sns.factorplot(data=df2,
                   kind="bar",
                   col="variable", # you have 1 plot per variable, forming 1 line and 4 columns (4 different variables)
                   x="name", # in each plot the x-axis will be the name
                   y="value", # the height of the bar
                   col_wrap=2) # you actually want your line of plots to contain 2 plots maximum 
g.set_xticklabels(rotation=90) # rotate the labels so they don't overlap
plt.tight_layout() # fit everything into the figure

多重条形图

高温超导

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

matplotlib条形图,数据框行名称为图例

来自分类Dev

为多个条形图添加通用图例Matlab

来自分类Dev

每组具有多个或不同图例的堆叠条形图

来自分类Dev

python + matplotlib:如何更改单个条形图的线宽?

来自分类Dev

单个图中多个类别数据的条形图

来自分类Dev

单个条形图上多个类别变量的子图计数

来自分类Dev

在Matplotlib中绘制多个直方图-颜色或并排条形图

来自分类Dev

在python中使用matplotlib绘制多个分组的条形图

来自分类Dev

面板上的多个堆叠条形图(matplotlib)

来自分类Dev

Matplotlib:堆积的条形图

来自分类Dev

Matplotlib并排条形图

来自分类Dev

堆积的条形图图例问题jqplot

来自分类Dev

在ggplot中显示条形图的图例

来自分类Dev

在ggplot中显示条形图的图例

来自分类Dev

堆积的条形图图例问题jqplot

来自分类Dev

在ggplot中显示条形图的图例

来自分类Dev

更改条形图图例中的颜色

来自分类Dev

绘制多个条形图

来自分类Dev

多个类别条形图

来自分类Dev

ios图表条形图图例中包含多个系列(标签)

来自分类Dev

如何为单个条目绘制具有多个值的堆积条形图?频率图

来自分类Dev

基于值的颜色matplotlib条形图

来自分类Dev

Matplotlib中条形图的平均折线

来自分类Dev

熊猫/ matplotlib:刻面条形图

来自分类Dev

matplotlib条形图未出现

来自分类Dev

在matplotlib上绘制条形图

来自分类Dev

Python Matplotlib条形图颜色

来自分类Dev

如何从Matplotlib条形图获取数据

来自分类Dev

matplotlib中的异常条形图