Как создать визуализацию из 2 разных наборов данных с несколькими строками? - PullRequest
1 голос
/ 07 апреля 2019

Я пытаюсь построить график зависимости цены GPU от цены криптовалюты.

Мне удалось создать 2 отдельные визуализации, которые показывают среднюю цену графических процессоров и среднюю цену на криптовалюту по годам, но, похоже, не могут их объединить.

...
plt.plot(GPUDATA.groupby(GPUDATA['Date'].dt.strftime('%Y')['Price_USD'].mean())
...

Это изображение производит для "Цены на GPU":
image

plt.plot(BITCOINDATA.groupby(BITCOINDATA['Date'].dt.strftime('%Y'))['Open'].mean())

, который производит это изображение для «Крипто Цены»:
Crypto

Мне нужно, чтобы эти две визуализации были объединены в один график. Я вроде новичок в создании визуализаций, поэтому я не уверен, сколько еще информации нужно предоставить. Я был бы рад предоставить любую необходимую информацию! Спасибо!

РЕДАКТИРОВАТЬ: записи в кадрах данных содержат идентификатор продукта, затем дату, а затем цену продукта на эту дату. Из-за этого существует много повторяющихся лет и идентификаторов как на кадре данных GPU, так и на кадре данных Crypto, поэтому я сделал группу по функциям.

Ответы [ 2 ]

0 голосов
/ 07 апреля 2019
plt.close('all')
ax = GPUDATA.groupby(GPUDATA['Date'])['Price_USD'].mean().plot()
BITCOINDATA.groupby(BITCOINDATA['Date'])['Open'].mean().plot(ax=ax)
plt.show()

enter image description here

Вы можете добавлять надписи и условные обозначения, используя параметры графика

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.html

0 голосов
/ 07 апреля 2019

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

import matplotlib.pyplot as plt

fig, ax1 = plt.subplots(figsize=(10,10))
ax2 = ax1.twinx()

ax1.plot(GPUDATA.groupby(GPUDATA['Date'].dt.strftime('%Y'))['Price_USD'].mean(),'r', label = 'Avg GPU Prices')
ax1.set_ylabel("Avg GPU Price", color='r', fontsize=20)
ax1.set_ylim(350,600)
ax1.tick_params(axis='y', colors= 'r', labelsize=14)
ax1.tick_params(axis='x', colors= 'k', labelsize=14)

ax2.plot(BITCOINDATA.groupby(BITCOINDATA['Date'].dt.strftime('%Y'))['Open'].mean(), 'b', label = 'Avg Crypto Prices')
ax2.set_ylabel("Avg Crypto Price", color='b', fontsize=20)
ax2.set_ylim(0, 900)
ax2.tick_params(axis='y', colors= 'b', labelsize=14)

lines, labels = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax1.legend(lines + lines2, labels + labels2, loc=2, fontsize=20)

ax1.grid(b=False)
ax2.grid(b=False)

plt.title("Yearly Average GPU and Crypto Prices", fontsize=25)
plt.show()

enter image description here

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