让我们考虑以下数据:
accuracies_in = ([0.5959219858156029, 0.5736842105263158, 0.5670212765957447, 0.3])
accuracies_out = [0.5, 0.6041666666666666, 0.2, 0.4]
auc_out = [0.5182608695652174, 0.6095652173913042, 0.5, 0.7]
algorithm = ["Logistic Regression", "Decision Tree", "Random Forest", "Neural Network"]
frame = pd.DataFrame([accuracies_in, accuracies_out, auc_out])
frame.index = ["accuracies_in", "accuracies_out", "auc_out"]
frame.columns = algorithm
using pandas.DataFrame.melt() with seaborn.barplot [duplicate]
我想要一个条形图来显示这三个特征( accuracies_in
、 accuarcies_out
和 auc_out
)的结果。换句话说,在条形图上,我想或多或少地对条形图进行分组:
Grouped seaborn.barplot from a wide pandas.DataFrame
第一组(第一行 - accuracy_in
)将包含四个条 - accuracies_in
用于逻辑回归、决策树、随机森林和神经网络。第二组条形将再次包含四个条形,但这次是第二行 - accuracies_out
。最后 - 第三组条形将包含四个条形,每个条形中都有 auc_out
。
你能帮我看看该怎么做吗?我搜索了很多问题,但找不到任何可以绘制与行相关的条形图的内容。你能帮我解决这个问题吗?
最佳答案
您需要将数据帧转换为 long form ,使用pd.melt
.
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
# frame: given dataframe
df = frame.melt(var_name='Algorithm', value_name='Accuracy', ignore_index=False)
sns.set()
sns.barplot(data=df, x=df.index, y='Accuracy', hue='Algorithm')
关于python - 如何使用seaborn相对于行绘制多个条形图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71525359/