Слишком много данных, что пунктирная линия в Matplotlib кажется прямой - PullRequest
0 голосов
/ 11 июня 2018

Как показано на рисунке ниже. В подпункте (2,1,1) стиль линии равен '-' ,, но выглядит как прямая линия.В подзаговоре (2, 1, 2) типом строки является ':', он выглядит лучше, но также имеет ту же проблему.Как я могу получить краткую пунктирную линию?enter image description here

plt.subplot(2, 1, 1)
plt.plot(df['START_DATETIME'],df['RESULT_DESC'],'o')
plt.plot(df['START_DATETIME'],(xbar,) * num)
plt.plot(df['START_DATETIME'],((UCL,) * num),'--')
plt.plot(df['START_DATETIME'],((LCL,) * num),'--')

plt.subplot(2, 1, 2)
plt.plot(df['START_DATETIME'],df['range'],'o')
plt.plot(df['START_DATETIME'],(rbar,) * num) 
plt.plot(df['START_DATETIME'],((UCLR,) * num),':')
plt.axhline(y=UCLR, xmin=starttime, xmax=stoptime)
plt.plot(df['START_DATETIME'],((0,)*num),':')

1 Ответ

0 голосов
/ 11 июня 2018

Я думаю, что проблема в том, что у вас слишком много несортированных точек.Ваш код отображает множество линий взад-вперед, по отдельности все они будут разбиты / разбиты, но одна над другой они будут больше похожи на прямую линию (я не знаю, почему именно не прямая линия, но я 'Я догадываюсь, потому что внутренне matplotlib не всегда начинает чертить точно с начальной точки, чтобы сэкономить время - в противном случае построение тысяч строк, как в этом случае, заняло бы вечность).

Решение, поскольку вы просто строите графикпрямая линия - ограничение ввода двумя точками, первой и последней.Не имея ваших данных, я скопировал их со случайными данными, см. Ниже:

из matplotlib

import pyplot as plt
import numpy as np
x = np.random.rand(10000)
plt.plot(x,[1]*len(x), '--')
plt.text(0, 0.9, 'Wrong - too many points')
plt.plot([np.min(x), np.max(x)], [0]*2, '--')
plt.text(0, 0.1, 'Correct - only two points')

Вывод:

enter image description here

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