matplotlib - 子图未正确绘制,matplotlib
问题描述
我想有一个 2x2 网格,每个网格是 8 乘以三个相邻的条。这是因为我有四个评估参数,每个评估三个模型的 8 种语言的质量。
我能够绘制其中一个,但它不适用于我的绘图网格中的其他三个。
eval_list = ["F1-Werte (micro)", "Precision", "Recall", "Accuracy"]
lang_list = ["Alle Sprachen", "Chinesisch", "Deutsch", "Englisch", "Finnisch", "Französisch", "Italienisch", "Spanisch"]
x = np.arange(start=1, stop=9, step=1)
fig, axes = plt.subplots(2, 2, figsize=(10,10), sharex=False)
df_list = list()
count = 0
for eval_elem in eval_list:
flair = list()
bert = list()
roberta = list()
for lang in lang_list:
flair.append(dfBest.query("Eval==@eval_elem").query("Lang==@lang").query("Model=='multiflair'").iloc[0]['Average'])
bert.append(dfBest.query("Eval==@eval_elem").query("Lang==@lang").query("Model=='bert'").iloc[0]['Average'])
roberta.append(dfBest.query("Eval==@eval_elem").query("Lang==@lang").query("Model=='roberta'").iloc[0]['Average'])
#ax = plt.subplot(2,2,count+1)
a = 1 if count > 1 else 0
b = 1 if count%2!=0 else 0
axes[a][b].bar(x-0.2, flair, width=0.2, color='b', align='center')
axes[a][b].bar(x, bert, width=0.2, color='g', align='center')
axes[a][b].bar(x+0.2, roberta, width=0.2, color='r', align='center')
plt.xticks(x, lang_list, rotation=90)
plt.title(eval_list[count])
plt.legend(bbox_to_anchor=(1.1, 1), labels=["multiflair", "bert", "roberta"])
plt.show()
count += 1
三个列表 flair、bert 和 roberta 代表数据,它们在每次迭代中都正确地列出了八个浮点数的列表,但除此之外我不知道布局有什么问题。
解决方案
推荐阅读
- bash - jq如何使用key变量获取json文件的二级值
- git - git clone 之后所有文件都没有版本化 | 吉特 | 智能
- c - 在 C 中将代码中定义的数据复制到 char 指针的内存位置?
- javascript - 如何根据表单中先前选中的复选框获取单选复选框列表?
- python-3.x - 为什么变量 'index' 没有像变量 'mins' 一样被返回和打印出来?
- python - 如何以 Pythonic 方式将字典值映射到另一个字典?
- c# - 如何在 WPF c# 中获取/清除动态嵌套的用户控件
- java - 用于使用的 Java 泛型
父类中未定义的方法 - sql - 案例陈述同一列
- javascript - 如何为向下滚动到最后的 Chrome 扩展程序编写 JavaScript 代码(我想获取所有 Facebook 好友列表)