我有一个使用熊猫数据框的不同列创建的多个条形图。
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
好吧,首先,您的表不是整齐的格式(请参阅此处: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] 删除。
我来说两句