python - 如何使用 seaborn 制作以下条形图?
问题描述
SR=pd.DataFrame([['Linear Regression', 0.9533333333333334, 0.9747081712062257, 0.8255813953488372],['Ridge Classifier', 0.905, 0.9980544747081712, 0.3488372093023256], ['Decision Tree Classifier',0.9883333333333333,0.9922178988326849,0.9651162790697675], ['Random Forest', 0.9916666666666667, 0.9980544747081712, 0.9534883720930233],['XG Boost', 0.9916666666666667, 0.9980544747081712, 0.9534883720930233],['Neural Network', 1.0, 1.0, 1.0]], columns = ['Model', 'Accuracy','Sensitivity','Specificity'])
如何使用我拥有seaborn
的数据框创建附加的条形图(在 excel 上制作) SR
?
解决方案
首先,你应该重新塑造你的数据框pandas.melt
:
SR = pd.melt(frame = SR,
id_vars = 'Model',
var_name = 'Statistic',
value_name = 'value')
所以你得到:
Model Statistic value
0 Linear Regression Accuracy 0.953333
1 Ridge Classifier Accuracy 0.905000
2 Decision Tree Classifier Accuracy 0.988333
3 Random Forest Accuracy 0.991667
4 XG Boost Accuracy 0.991667
5 Neural Network Accuracy 1.000000
6 Linear Regression Sensitivity 0.974708
7 Ridge Classifier Sensitivity 0.998054
8 Decision Tree Classifier Sensitivity 0.992218
9 Random Forest Sensitivity 0.998054
10 XG Boost Sensitivity 0.998054
11 Neural Network Sensitivity 1.000000
12 Linear Regression Specificity 0.825581
13 Ridge Classifier Specificity 0.348837
14 Decision Tree Classifier Specificity 0.965116
15 Random Forest Specificity 0.953488
16 XG Boost Specificity 0.953488
17 Neural Network Specificity 1.000000
然后你可以绘制新的数据框:
sns.barplot(ax = ax, data = SR, x = 'Model', y = 'value', hue = 'Statistic')
完整代码
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
SR=pd.DataFrame([['Linear Regression', 0.9533333333333334, 0.9747081712062257, 0.8255813953488372],['Ridge Classifier', 0.905, 0.9980544747081712, 0.3488372093023256], ['Decision Tree Classifier',0.9883333333333333,0.9922178988326849,0.9651162790697675], ['Random Forest', 0.9916666666666667, 0.9980544747081712, 0.9534883720930233],['XG Boost', 0.9916666666666667, 0.9980544747081712, 0.9534883720930233],['Neural Network', 1.0, 1.0, 1.0]], columns = ['Model', 'Accuracy','Sensitivity','Specificity'])
SR = pd.melt(frame = SR,
id_vars = 'Model',
var_name = 'Statistic',
value_name = 'value')
fig, ax = plt.subplots(figsize = (12, 6))
sns.barplot(ax = ax, data = SR, x = 'Model', y = 'value', hue = 'Statistic')
plt.show()
推荐阅读
- pandas - 如何使用熊猫中的列表添加一对多列
- java - Java 提取维基百科信息
- datetime - 注释日期时间对象的推荐方法是什么?
- android - 使用 Gigya Android SDK 的密码智能锁
- powershell - PowerShell,帮助函数的语法
- javascript - 如何使我的网站仅适用于使用 JavaScript 的 Windows 用户?
- webpack - 如何使用工作箱和 webpack 生成工作服务人员?
- java - 带有嵌入式 tomcat 8.5 的 Spring Boot 2.2 无法启动。disableRegistry 不存在
- javascript - 我想在nuxt的CDN中放多个版本的jquery
- python - 在 pandas DataFrame 中平均重复而不是使用 drop_duplicates 来保持第一