【发布时间】:2019-02-27 06:26:10
【问题描述】:
我有 15 个 barh 子图,如下所示:
我似乎无法让图例正常工作,因此我将 [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 notebook。
【问题讨论】:
-
尝试使用
ax.barh([str(i) for i in current_column_values.index], current_column_values.values, label=[str(i) for i in current_column_values.index])并使用ax.legend() -
没有 ax.legend 我看不到图例。如果我只写
ax.legend(),那么我会看到只有一种颜色的图例,以及所有标签的列表。
标签: python pandas matplotlib graph legend