<p>我建议使用<code>seaborn</code></p>
<p>下面是一个可能有助于您的示例:</p>
<p>进口</p>
<pre><code>import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
</code></pre>
<p>制作数据</p>
^{pr2}$
<p>Seaborn有一个很好的工具,叫做<code>factorplot</code>,它创建了一个子空间网格,其中的行/列是用您的数据构建的。为了做到这一点,我们需要将<code>df</code>融化成一个更有用的形状。在</p>
<pre><code>df_melt = df.melt(id_vars = 'cls',
value_vars = ['accuracy',
'auc',
'ppv',
'sensitivity',
'specificity'],
var_name = 'columns')
</code></pre>
<p>现在我们可以使用列“columns”创建<code>factorplot</code>。在</p>
<pre><code>a = sns.factorplot(data = df_melt,
x = 'cls',
y = 'value',
kind = 'box', # type of plot
col = 'columns',
col_order = ['sensitivity', # custom order of boxplots
'specificity',
'accuracy',
'ppv',
'auc']).set_titles('{col_name}') # remove 'column = ' part of title
plt.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/EWH64.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/EWH64.png" alt="factorplot"/></a></p>
<p>你也可以使用Seaborn的箱线图。在</p>
<pre><code>b = sns.boxplot(data = df_melt,
hue = 'cls', # different colors for different 'cls'
x = 'columns',
y = 'value',
order = ['sensitivity', # custom order of boxplots
'specificity',
'accuracy',
'ppv',
'auc'])
sns.plt.title('Boxplot grouped by cls') # You can change the title here
plt.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/rnkyO.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/rnkyO.png" alt="boxplot"/></a></p>
<p>这将给你相同的情节,但所有在一个数字,而不是子情节。它还允许您用一行更改图形的标题。不幸的是,我找不到一个方法删除'列'副标题,但希望这将得到你所需要的。在</p>
<p><strong>编辑</strong></p>
<p>要从侧面查看绘图:
工厂生产线
交换您的<code>x</code>和<code>y</code>值,将<code>col = 'columns'</code>更改为<code>row = 'columns'</code>,将{<cd9>}更改为{<cd10>},并将<code>'{col_name}'</code>更改为<code>'{row_name}'</code></p>
<pre><code>a1 = sns.factorplot(data = df_melt,
x = 'value',
y = 'cls',
kind = 'box', # type of plot
row = 'columns',
row_order = ['sensitivity', # custom order of boxplots
'specificity',
'accuracy',
'ppv',
'auc']).set_titles('{row_name}') # remove 'column = ' part of title
plt.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/16be7.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/16be7.png" alt="h factorplot"/></a>
箱形图
交换<code>x</code>和<code>y</code>值,然后添加参数<code>orient = 'h'</code>,如下所示</p>
<pre><code>b1 = sns.boxplot(data = df_melt,
hue = 'cls',
x = 'value',
y = 'columns',
order = ['sensitivity', # custom order of boxplots
'specificity',
'accuracy',
'ppv',
'auc'],
orient = 'h')
sns.plt.title('Boxplot grouped by cls')
plt.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/2Ncb6.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/2Ncb6.png" alt="h boxplot"/></a></p>