Matplotlib X-ticks неправильно распределяется - PullRequest
0 голосов
/ 23 марта 2020

У меня есть график, как показано ниже, который имеет более 1000 точек по оси X. Я пытаюсь масштабировать ось х на 3 значения, минимальное, среднее и максимальное значения вместо 1000 меток.

Несмотря на мои усилия, обозначенные в хэштегах, все 3 значения записаны на один тик (друг на друга) или просто только 1 тик случайным образом размещается вдоль оси X.

import matplotlib.pyplot as plt
from matlplotlib.pyplot import figure

figure (num = None, figsize=(20,10), dpi=80, facecolor='w', edgecolor='k')

ax =plt.gca()
data.plot(kind='bar', x='colA', y='colB', ax=ax)

######
plt.xticks(np.arrange(0,3, step 1)

**ALSO TRIED**

plt.xticks = ([1,2,3], ["a","b","c"])

######
plt.show()

Как можно равномерно распределить минимальное, среднее и максимальное значения по оси X?

Ответы [ 2 ]

0 голосов
/ 23 марта 2020

Если 'colA' является числовым:

x_min = min(data['colA'])
x_max = max(data['colA'])
x_mid = (x_min + x_max) / 2
   # use regular division if the numbers are floats, use integer division in case all numbers are integers
plt.xticks([x_min, x_mid, x_max], ["a","b","c"])
# plt.xticks([x_min, x_mid, x_max])  # leave out the labels if the default labels are OK

Если, напротив, 'colA' является категориальным (так, некоторые строки), они внутренне пронумерованы как 0, 1, 2, ... до числа строки минус один:

x_min = 0
x_max = len(data['colA']) - 1
x_mid = x_max // 2  # integer division
plt.xticks([x_min, x_mid, x_max])
0 голосов
/ 23 марта 2020

Вы можете попробовать:

min_ = min(data['colA'])
max_ = max(data['colA'])
mid_ = (min_ + max_) / 2.
ax.set_xticks([min_, mid_, max_])
ax.set_xticklabels(['min', 'mid', 'max'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...