У меня есть dataframe вроде этого:Как делиться осями после добавления подзаголовков через add_subplot?
df = pd.DataFrame({'A': [0.3, 0.2, 0.5, 0.2], 'B': [0.1, 0.0, 0.3, 0.1], 'C': [0.2, 0.5, 0.0, 0.7], 'D': [0.6, 0.3, 0.4, 0.6]}, index=list('abcd'))
A B C D
a 0.3 0.1 0.2 0.6
b 0.2 0.0 0.5 0.3
c 0.5 0.3 0.0 0.4
d 0.2 0.1 0.7 0.6
Теперь я хочу, чтобы построить каждую строку как barplot причем ось у и х-тик-метки, разделяемые с использованием add_subplot
.
До сих пор я могу производить только сюжет, который выглядит следующим образом:
Существует одна проблема:
Оси не являются общими, как один сделать это после использования add_subplot
? Here, эта проблема решается путем создания одного огромного подзаголовка; есть ли способ сделать это по-другому?
Мой желаемый результат выглядит как сюжет выше с той лишь разницей, что в верхней строке нет ярлыков x-tick, а теперь в ярлыке y-tick в правом столбце.
Моя текущая попытка следующее:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = pd.DataFrame({'A': [0.3, 0.2, 0.5, 0.2], 'B': [0.1, 0.0, 0.3, 0.1], 'C': [0.2, 0.5, 0.0, 0.7], 'D': [0.6, 0.3, 0.4, 0.6]}, index=list('abcd'))
fig = plt.figure()
bar_width = 0.35
counter = 1
index = np.arange(df.shape[0])
for indi, rowi in df.iterrows():
ax = fig.add_subplot(2, 2, counter)
ax.bar(index, rowi.values, width=bar_width, tick_label=df.columns)
ax.set_ylim([0., 1.])
ax.set_title(indi, fontsize=20)
ax.set_xticks(index + bar_width/2)
counter += 1
plt.xticks(index + bar_width/2, df.columns)
ли вы имеете в виду * общий * как в 'add_subplot (..., sharex =, sharey =) '? – kazemakase
@kazemakase: Если эти флаги 'sharex =', 'sharey =', существовали в 'add_subplot', это действительно было бы идеально. Но таких флагов я не вижу. – Cleb
Вы пробовали? Или вы просто говорите, что их нет, потому что вы слишком ленивы? – ImportanceOfBeingErnest