У меня есть график рассеяния, который имеет время на x-axis
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import ticker
d = ({
'A' : ['08:00:00','08:10:00','08:12:00','08:26:00','08:29:00','08:31:00','10:10:00','10:25:00','10:29:00','10:31:00'],
'B' : ['1','1','1','2','2','2','7','7','7','7'],
'C' : ['X','Y','Z','X','Y','Z','A','X','Y','Z'],
})
df = pd.DataFrame(data=d)
fig,ax = plt.subplots()
x = df['A']
y = df['B']
x_numbers = (pd.to_timedelta(df['A']).dt.total_seconds())
plt.scatter(x_numbers, y)
plt.show()
Выход 1:

Я хотел обменять общее количество секунд на фактические метки времени, поэтому я включил:
plt.xticks(x_numbers, x)
В результате x-метки перекрывают друг друга.
Если я использую:
plt.locator_params(axis='x', nbins=10)
Результаты такие же, как указано выше. Если я поменяю nbins
на что-то меньшее, то тики не перекрываются, но не совпадают с их точками рассеяния Как и в точках разброса, не совпадают с правильной отметкой времени.
Если я использую:
M = 10
xticks = ticker.MaxNLocator(M)
ax.xaxis.set_major_locator(xticks)
ticks
не перекрываются, но не совпадают с соответствующими точками рассеяния.
Можно ли выбрать число x-ticks
, которое вы используете, но все еще выровнено с соответствующей точкой данных.
например. Для figure
ниже. Могу ли я просто использовать n
число ticks
вместо всех?
Выход 2:
