Почему этот график не работает при добавлении Scatter, но работает при его удалении? - PullRequest
0 голосов
/ 24 ноября 2018

Я использую следующее для построения даты топора и десятичной точки y.Он прекрасно работает без закомментированной строки (разброс), но если вы раскомментируете его, он покажет все по одной оси x

что мне не хватает?

спасибо

import matplotlib.pyplot as plt
import datetime

fig = plt.figure(facecolor="#979899")
ax = plt.gca()
ax.set_facecolor("#d1d1d1")
plt.grid(True)
plt.title("This is a title",fontsize=16)

plt.xticks([datetime.date(2018,11,20),datetime.date(2018,11,21),datetime.date(2018,11,22)],["11/20","11/21","11/22"])
plt.yticks([0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0],["0.0","0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1.0"])

x1 = [datetime.date(2018,11,20),datetime.date(2018,11,21),datetime.date(2018,11,22)]
y1 = [0.18,0.32,0.21]

for i,item in enumerate(y1):
    xP = x1[i]
    yP = y1[i]
    plt.text(xP,yP,str(item)+"%",fontsize=11)

#plt.scatter(x1,y1)
plt.plot(x1,y1)
plt.show()

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

Проблема в автоматическом масштабировании коллекций. Это основная проблема, которая давно известна, но трудно найти.Существуют определенные случаи, когда автоматическое масштабирование не работает надежно, когда значения находятся слишком близко друг к другу.К сожалению, это часто относится к датам.

import matplotlib.pyplot as plt
import datetime

fig, ax = plt.subplots()

x1 = [datetime.date(2018,11,20),datetime.date(2018,11,22)]
y1 = [1,2]

plt.scatter(x1,y1, s=50, color="red")
plt.plot(x1,y1, marker="o", ms=3, zorder=3)

plt.show()

enter image description here

Однако вы можете сначала создать plot.Это определит пределы автомасштабирования в достаточной степени.После этого сюжета scatter.

import matplotlib.pyplot as plt
import datetime

fig, ax = plt.subplots()

x1 = [datetime.date(2018,11,20),datetime.date(2018,11,22)]
y1 = [1,2]

plt.plot(x1,y1, marker="o", ms=3)
plt.scatter(x1,y1, s=50, color="red")

plt.show()

enter image description here

0 голосов
/ 24 ноября 2018

попробуйте установить пределы для осей x и y:

plt.scatter(x1,y1)
plt.plot(x1,y1)
plt.xlim(datetime.date(2018,11,20),datetime.date(2018,11,22))
plt.ylim(0.1,0.4)
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...