Почему не видны метки на моем матплотлибе? Тот же код работает для ноутбуков Jupyter - PullRequest
0 голосов
/ 30 марта 2019

Я создаю базовую фигуру с 9-ю участками, все с общими осями X и Y.По умолчанию отображаются только метки галочек для самых отдаленных участков.Я пытаюсь показать метки x и y для всех внутренних подсюжетов, но ничего, что я пытаюсь, не работает на моей машине (windows), несмотря на то, что тот же код работает, когда я использую ноутбуки Jupyter.

Я использую два цикла for для циклического прохождения всех 9 вспомогательных участков, а затем циклически перебираю все отдельные метки x и y на этих осях, записывая label.set_visible (True).Это работает при использовании ноутбуков Jupyter, но не работает, когда я пишу код на моей машине.См. Ниже мои версии Python и Anaconda: Python 3.7.1 (по умолчанию, 10 декабря 2018, 22:54:23) [MSC v.1915, 64-битная (AMD64)] :: Anaconda, Inc. на win32

Текущий код:

fig, ((ax1,ax2,ax3), (ax4,ax5,ax6), (ax7,ax8,ax9)) = plt.subplots(3, 3, sharex=True, sharey=True)
linear_data = np.array([1,2,3,4,5,6,7,8])
ax5.plot(linear_data, '-') # set inside tick labels to visible
for ax in plt.gcf().get_axes():
    for label in ax.get_xticklabels() + ax.get_yticklabels():
        label.set_visible(True)
plt.show()

Это работает с ноутбуками Jupyter, но на моем компьютере метки галочек для внутренних вспомогательных участков по-прежнему не видны.

Результат в блокноте Jupyter: Jupyter Notebook Result

Результат локального компьютера: Local machine Python / Anaconda Result

Любая помощь будет принята с благодарностью!

Ответы [ 3 ]

0 голосов
/ 30 марта 2019

Заменить sharex=True, sharey=True на sharex=False, sharey=False

0 голосов
/ 30 марта 2019

Как показано в этой проблеме , видимость меток меток общих осей должна быть установлена ​​с помощью tick_params начиная с версии 2.1 matplotlib.

import numpy as np
import matplotlib.pyplot as plt

fig, axes = plt.subplots(3, 3, sharex=True, sharey=True)

linear_data = np.array([1,2,3,4,5,6,7,8])
axes[1,1].plot(linear_data, '-')

for ax in axes.flat:
    ax.tick_params(which='both', labelbottom=True, labelleft=True)

plt.show()

enter image description here

0 голосов
/ 30 марта 2019

Используйте это для отображения меток:

import numpy as np
import matplotlib.pyplot as plt

# Plot figure of subplots with shared axes
fig, ((ax1,ax2,ax3), (ax4,ax5,ax6), (ax7,ax8,ax9)) = plt.subplots(3, 3, sharex=True, sharey=True)
linear_data = np.array([1,2,3,4,5,6,7,8])
ax5.plot(linear_data, '-')

# Show tick labels on all subplots
for ax in plt.gcf().get_axes():
    ax.xaxis.set_tick_params(labelbottom=True)
    ax.yaxis.set_tick_params(labelleft=True)

plt.show()

Plot with labels on subplots

Примечание: я использую Python 3.6.6 на своем локальном компьютере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...