Линия тренда Python Matplotlib со строковыми метками оси X - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь отобразить набор данных. У меня значения y равны

y=[129.000, 128.000, 140.000, 150.000]
x=["1/2018", "2/2018", "3/2018", "4/2018"]
# plot the data itself
pylab.plot(x,y,‘o’)
# calc the trendline (it is simply a linear fitting)
z = numpy.polyfit(x, y, 1)
p = numpy.poly1d(z)
pylab.plot(x,p(x),“r–”)
# the line equation:
print “y=%.6fx+(%.6f)”%(z[0],z[1])

Я продолжаю получать:

ufunc 'add' did not contain loop with signature matching type dtype ('S32') ('S32') ('S32')

Я также пытался использовать даты эпох, ноэто не сработало.Я просто пытаюсь наметить тенденцию цен к датам и продлить линию тренда после дат.Я знаю, что ошибка связана с метками, являющимися строками.Я не уверен, как построить линию тренда с помощью строковых меток.В руководстве, которое я использовал, есть метки даты, поэтому я не уверен, что делаю не так.

http://widu.tumblr.com/post/43624347354/matplotlib-trendline

Есть мысли?

1 Ответ

0 голосов
/ 24 мая 2018

Я думаю, у вас есть правильная идея, когда вы говорите о "преобразовании времени эпох в даты только на этикетках". Здесь , вы можете увидеть, как преобразовать дату и время в числа, используя собственный date2num Matplotlib, а затем настроить график так, чтобы метки оси X отображались как даты.

from matplotlib import pylab
import numpy
import dateutil
import matplotlib.dates as mdates
import matplotlib.pyplot as plt

y=[129.000, 128.000, 140.000, 150.000]
xStrings=["1/2018", "2/2018", "3/2018", "4/2018"]

# Convert strings to datetime objects,and then to Matplotlib date numbers
dates = [dateutil.parser.parse(x) for x in xStrings]
x = mdates.date2num(dates)

# plot the data itself
pylab.plot(x,y,'o')

# calc the trendline (it is simply a linear fitting)
z = numpy.polyfit(x, y, 1)
p = numpy.poly1d(z)

polyX = numpy.linspace(x.min(), x.max(), 100)
pylab.plot(polyX,p(polyX),"r")
# the line equation:
print("y=%.6fx+(%.6f)"%(z[0],z[1]))

# Show X-axis major tick marks as dates
loc= mdates.AutoDateLocator()
plt.gca().xaxis.set_major_locator(loc)
plt.gca().xaxis.set_major_formatter(mdates.AutoDateFormatter(loc))
plt.gcf().autofmt_xdate()

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