Seaborn's barplot
- категоричный сюжет.Это означает, что он помещает столбцы в последовательные целочисленные позиции (0,1, ... N-1).Следовательно, если у вас есть N баров, ось будет в диапазоне от -0,5 до N-0,5.
Невозможно сказать морскому рогу размещать бары в разных положениях;но вы, конечно, можете подделать ярлыки, чтобы они выглядели как таковые.Например, чтобы маркировать каждый 5-й столбец значением от x
:
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from matplotlib import ticker
sns.set()
fig, ax = plt.subplots()
x = np.linspace(5, 10)
y = x ** 2
sns.barplot(x, y, ax=ax)
ax.xaxis.set_major_locator(ticker.FixedLocator(np.arange(0, len(x), 5)))
ax.xaxis.set_major_formatter(ticker.FixedFormatter(x[::5]))
ax.tick_params(axis="x", rotation=90)
plt.tight_layout()
plt.show()
И наоборот, можно строить категориальные графики с помощью matplotlib.Для этого нужно построить строки.
ax.bar(x.astype(str), y)
ax.xaxis.set_major_locator(ticker.FixedLocator(np.arange(0, len(x), 5)))
ax.xaxis.set_major_formatter(ticker.FixedFormatter(x[::5]))
ax.tick_params(axis="x", rotation=90)
Если вам нужен числовой гистограмма, т. Е. График, где каждый столбец находится наположение оси x
, потребуется *1023*, чтобы использовать matplotlib.Это случай по умолчанию, также показанный в вопросе, где столбцы находятся в диапазоне от 5 до 10. Следует убедиться, что ширина столбцов меньше, чем разница между последовательными позициями x в этом случае.
ax.bar(x, y, width=np.diff(x).mean()*0.8)
ax.xaxis.set_major_locator(ticker.MultipleLocator(1))
ax.xaxis.set_major_formatter(ticker.FormatStrFormatter('%.2f'))
ax.tick_params(axis="x", rotation=90)