matplotlib - pandas - Нет xlabel и xticks для двойных осей в фигурах подзаголовка

У меня был аналогичный вопрос, на который ранее был дан ответ. Однако он отличается использованием пакета Pandas с ним.

Вот мой предыдущий вопрос: matplotlib - нет xlabel и xticks для двойных топоров в диаграммах с частями

Итак, мой вопрос, как и последний, заключается в том, почему он не показывает xlabel и xticks для диаграмм первой строки при использовании этого кода Python.

Два примечания:

  1. Я также использовал subplots вместо gridspec, но результат тот же.
  2. Если вы раскомментируете любую из прокомментированных строк в этом коде, что связано с использованием панд на осях каждой диаграммы, xlabel и xticks исчезнут!

import matplotlib.pyplot as plt
import matplotlib.gridspec as gspec
import numpy as np
import pandas as pd
from math import sqrt

fig = plt.figure() 
gs = gspec.GridSpec(2, 2)
gs.update(hspace=0.7, wspace=0.7)
ax1 = plt.subplot(gs[0, 0])
ax2 = plt.subplot(gs[0, 1])
ax3 = plt.subplot(gs[1, 0])
ax4 = plt.subplot(gs[1, 1])


x1 = np.linspace(1,10,10)


ax12 = ax1.twinx()
ax1.set_xlabel("Fig1")
ax12.set_xlabel("Fig1")
ax1.set_ylabel("Y1")
ax12.set_ylabel("Y2")
# pd.Series(range(10)).plot(ax=ax1)
ax12.plot(x1, x1**3)




ax22 = ax2.twinx()
ax2.set_xlabel("Fig2")
ax22.set_xlabel("Fig2")
ax2.set_ylabel("Y3")
ax22.set_ylabel("Y4")
# pd.Series(range(10)).plot(ax=ax2)
ax22.plot(x1, x1**0.5)


ax32 = ax3.twinx()
ax3.set_xlabel("Fig3")
ax32.set_xlabel("Fig3")
ax3.set_ylabel("Y5")
ax32.set_ylabel("Y6")
# pd.Series(range(200)).plot(ax=ax3)



ax42 = ax4.twinx()
ax4.set_xlabel("Fig4")
ax42.set_xlabel("Fig4")
ax4.set_ylabel("Y7")
ax42.set_ylabel("Y8")
# pd.Series(range(10)).plot(ax=ax42)



plt.subplots_adjust(wspace=0.8, hspace=0.8)
plt.show()

person Millad    schedule 07.02.2016    source источник
comment
Есть комментарии или решения по этой проблеме? Я очень ценю любую помощь!   -  person Millad    schedule 13.02.2016
comment
Если вы построите данные pandas ДО создания двойника, похоже, это сработает.   -  person Scimonster    schedule 14.09.2016


Ответы (2)


У меня такая же проблема, потому что я смешивал графики, сделанные с помощью matplotlib и сделанные с помощью Pandas.

Вы не должны строить с помощью Pandas, вот как вы можете заменить:

pd.Series(range(10)).plot(ax=ax42)

с участием

ax42.plot(pd.Series(range(10))
person steco    schedule 19.07.2018
comment
Хотя это более простой способ решить проблему, я бы не сказал, что вам не следует строить график с помощью pandas, поскольку есть обходной путь к этой проблеме, описанный в этом вопросе x-ticks исчезают при построении на подзаголовках с общей осью x - person Afsan Abdulali Gujarati; 26.02.2019

Как Scimonster упомянул выше для меня, это сработало, когда я нарисовал всех панд перед созданием двойных топоров.

У меня было несколько графиков в Twinx, которые также поступали из объектов Pandas Dataframe (графики x, t). Я создал отдельные списки перед тем, как начать сюжет, а затем использовал их для построения после построения первых графиков панд.

Чтобы подвести итог, мой рабочий процесс был следующим: 1. Создание списков для графиков двойников 2. Открытие графика и построение всех графиков панд с обычными осями. 3. создание двойных осей 4. построение списков на двойных осях

к счастью, этот поток у меня работает

person Pranav Pandit    schedule 20.02.2017