gpt4 book ai didi

python - Matplotlib 轴图例在 barh 中仅显示一个标签

转载 作者:行者123 更新时间:2023-12-01 09:00:47 24 4
gpt4 key购买 nike

我有 15 个 barh 子图,如下所示:

enter image description here

我似乎无法使图例正常工作,因此我将在图表和图例中看到 [2,3,4] 作为单独的标签。

我在使此功能适用于子图时遇到问题。我的代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
def plot_bars_by_data(data, title):
fig, axs = plt.subplots(8,2, figsize=(20,40))
fig.suptitle(title, fontsize=20)
fig.subplots_adjust(top=0.95)
plt.rcParams.update({'font.size': 13})
axs[7,1].remove()

column_index = 0
for ax_line in axs:
for ax in ax_line:
if column_index < len(data.columns):
column_name = data.columns[column_index]
current_column_values = data[column_name].value_counts().sort_index()
ax.barh([str(i) for i in current_column_values.index], current_column_values.values)
ax.legend([str(i) for i in current_column_values.index])
ax.set_title(column_name)
column_index +=1

plt.show()

# random data
df_test = pd.DataFrame([np.random.randint(2,5,size=15) for i in range(15)], columns=list('abcdefghijlmnop'))
plot_bars_by_data(df_test, "testing")

我刚刚得到一个 8x2 的条形图,如上图所示。我怎样才能解决这个问题?我正在使用 Python 3.6 和 Jupyter Python 笔记本。

最佳答案

在代码中使用以下行。我无法将整个输出放在这里,因为它是一个包含大量子图的大图,因此显示了特定的子图。事实证明,首先您必须为子图创建一个句柄,然后传递图例值和句柄以生成所需的图例。

colors = ['r', 'g', 'b']
axx = ax.barh([str(i) for i in current_column_values.index], current_column_values.values, color=colors)
ax.legend(axx, [str(i) for i in current_column_values.index])

示例输出

enter image description here

关于python - Matplotlib 轴图例在 barh 中仅显示一个标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52467522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com