Как я могу подавить метки основных меток в осях matplotlib? - PullRequest
0 голосов
/ 24 сентября 2018

Этот код генерирует отдельные графы для образцов, разделенных на три группы данных.Итак, набор данных 1 имеет образцы A, B и C и так далее.Когда я строю ось X, мне нужны только имена образцов («Образец A», «Образец B» и т. Д.), А НЕ основные метки (например, «dataset1», «dataset2» и т. Д.) - я не знаю, как подавитьмажорные метки.

import matplotlib.pyplot as plt
import numpy as np
import random

#build dataset as dictionary
data = {}
data['dataset1'] = {}
data['dataset2'] = {}
data['dataset3'] = {}

#simulate data
n = 100
for k,v in data.iteritems():
    upper = random.randint(0, 1000)
    v['sample A'] = np.random.uniform(0, upper, size=n)
    v['sample B'] = np.random.uniform(0, upper, size=n)
    v['sample C'] = np.random.uniform(0, upper, size=n)

fig, axes = plt.subplots(ncols=3, sharey=True)
fig.subplots_adjust(wspace=0)

#build subplots
for ax, name in zip(axes, ['dataset1', 'dataset2', 'dataset3']):
    ax.boxplot([data[name][item] for item in ['sample A', 'sample B', 'sample C']])
    ax.set(xticklabels=['sample A', 'sample B', 'sample C'], xlabel=name)
    ax.margins(0.05) # Optional

#plot labels
for ax in fig.axes:
    plt.sca(ax)
    plt.xticks(ha = 'right', rotation=45)

plt.show()

Если вам интересно, это вызывает серьезную проблему с представлением моего фактического набора данных.

Ответы [ 3 ]

0 голосов
/ 24 сентября 2018

Установите ярлыки невидимыми

#build subplots
for ax, name in zip(axes, ['dataset1', 'dataset2', 'dataset3']):
    ax.boxplot([data[name][item] for item in ['sample A', 'sample B', 'sample C']])
    ax.set(xticklabels=['sample A', 'sample B', 'sample C'], xlabel=name)
    ax.margins(0.05) # Optional
    ax.xaxis.label.set_visible(False)     # Add this to suppress the major labels
0 голосов
/ 24 сентября 2018

Оба других решения сначала создали x-метки, а затем удалили / спрятали их.Самый простой способ - не ставить метки на первое место.

Просто используйте

ax.set(xticklabels=['sample A', 'sample B', 'sample C'])

без передачи аргумента xlabel=name enter image description here

0 голосов
/ 24 сентября 2018

Простое решение замените метку пустой строкой или сделайте ее невидимой:

for ax in fig.axes:
    plt.xlabel('')
    # or
    # ax.xaxis.label.set_visible(False)

example_plot

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