Я создаю графики подзаголовков, используя цикл for, и когда я включаю «sharex», метки x для всех подзаголовков неверны и соответствуют последнему подзаголовку. Я хочу, чтобы он создавал галочку для каждой доступной метки.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame({
'letters' : ['A','A','A', 'B','B','B', 'C','C','C', 'D','D','D'],
'values' : [1, 2, 3, 3, 2, 1, 2, 3, 1, 2, 3, 4],
'options': ['O 1', 'O 2', 'O 3', 'O 3', 'O 2', 'O 1',
'O 2','O 3','O 1','O 2','O 3','O 4'],
})
list_letters = ['A', 'B', 'C', 'D']
fig,axes = plt.subplots(nrows = 1, ncols = len(list_letters), sharey = True, sharex = True)
for letter in list_letters:
index = list_letters.index(letter)
df2 = df[(df['letters'] == letter)]
sns.scatterplot(x="options", y="values",data = df2,
hue = 'options', ax=axes[index], legend = False)
axes[index].set_title(letter, rotation = 60, verticalalignment = 'bottom', ha = 'left')
Я специально сделал фрейм данных, поэтому параметр O1 имеет значение 1 для всех «букв». То же самое для O2, O3 и O4.
При отключенном shareX (ложь):
Обратите внимание, что значения не соответствуют параметрам правильно, есть только 3 метки, и все подграфики соответствуют последнему порядку подграфиков, когда shareX был выключен.
Это проблема со строковыми осями X. Если я изменяю столбец «Параметры» на числовые значения, все работает нормально. См. здесь:
Есть ли способ создать подграфики с помощью циклов for, включить ShareX и иметь четыре метки, O1, O2, O3, O4, и все значения правильно выровнены?