У меня есть большой код, который выводит несколько изображений. Время от времени, сюжет будет выглядеть следующим образом (см MWE ниже):matplotlib участки слишком много тиков
Обратите внимание, как клещи в оси х почти перекрывают друг друга, что выглядит довольно плохо.
Мой вопрос: почему матплотлиб не понимает это и просто занимает меньше тиков (как это обычно бывает без проблем)? Как я могу заставить matplotlib нарисовать меньше тиков в общем (т. Е. Я не после решения, которое применяет только для данного участка, это только пример)?
MWE (если код выглядит излишне сложным, это потому, что это небольшая часть гораздо большего код)
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import random
def scatter_plot(x, y):
ax = plt.subplot(gs[0:2, 0:2])
plt.xlim(min(x), 0.00158)
plt.xlabel('$x$', fontsize=16)
plt.ylabel('$y$', fontsize=16)
ax.minorticks_on()
plt.scatter(x, y)
# Generate random data.
x = [random.random()/100. for i in xrange(10000)]
y = [random.random() for i in xrange(10000)]
# Define size of output figure.
fig = plt.figure(figsize=(30, 25)) # create the top-level container
gs = gridspec.GridSpec(10, 12) # create a GridSpec object
# Create plot.
scatter_plot(x, y)
# Save plot to file.
fig.tight_layout()
plt.savefig('out.png', dpi=150)
И каково значение «stepize» для общего решения? – Gabriel
Также 'min' и' max 'являются зарезервированными именами для функций' min() 'и' max() '. Вы имели в виду 'min (x)' и 'max (x)'? – Gabriel
Извините. Я просто использовал 'min' и' max' в качестве заполнителей. Они должны быть минимальными и максимальными значениями тика, поэтому 'min (x)' и 'max (x)' кажутся естественным выбором, хотя вам могут понадобиться разные значения в зависимости от того, как вы хотите, чтобы график выглядел. 'stepize' должен быть просто разницей между max и min, деленными на количество тиков, которые вы хотите. Я отредактировал свой ответ, чтобы отразить это. –