#python #pandas #numpy #matplotlib
#python #pandas #numpy #matplotlib
Вопрос:
В настоящее время я пытаюсь сопоставить цену видеокарты 1080 с ценой биткойна с течением времени, но масштабы оси Y просто далеки. Пока это мой код:
import pandas as pd
from datetime import date
import matplotlib.pyplot as plt
from matplotlib.pyplot import *
import numpy as np
GPUDATA = pd.read_csv("1080Prices.csv")
BCDATA = pd.read_csv("BitcoinPrice.csv")
date = pd.to_datetime(GPUDATA["Date"])
price = GPUDATA["Price_USD"]
date1 = pd.to_datetime(BCDATA["Date"])
price1 = BCDATA["Close"]
plot(date, price)
plot(date1, price1)
И это приводит к этому:
Цены на графические процессоры, конечно, указаны синим цветом, а цена биткойнов — оранжевым. Я довольно новичок в визуализации, и мне трудно найти что-либо в Интернете, что могло бы помочь мне решить эту проблему. Некоторые из предложений, которые я нашел здесь, похоже, касаются построения данных из одного источника данных, но мои данные поступают из 2 источников данных.
В одном есть записи о цене графического процессора за данный день, в другом — открытая, закрытая, высокая и низкая цена биткойна за данный день. Я изо всех сил пытаюсь найти решение, любой совет будет более чем приветствоваться! Спасибо!
Ответ №1:
То, что вы хотите сделать, это сдвоить ось X, так что оба графика будут иметь общую ось X, но отдельные оси Y. Это можно сделать таким образом:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
GPUDATA = pd.read_csv("1080Prices.csv")
BCDATA = pd.read_csv("BitcoinPrice.csv")
gpu_dates = pd.to_datetime(GPUDATA["Date"])
gpu_prices = GPUDATA["Price_USD"]
btc_dates = pd.to_datetime(BCDATA["Date"])
btc_prices = BCDATA["Close"]
fig, ax1 = plt.subplots()
ax2 = ax1.twinx() # Create a new Axes object sharing ax1's x-axis
ax1.plot(gpu_dates, gpu_prices, color='blue')
ax2.plot(btc_dates, btc_prices, color='red')
Поскольку вы не предоставили образцы данных, я не могу показать соответствующую демонстрацию, но это должно сработать.
Комментарии:
1. Это отлично работает! Большое вам спасибо за объяснение этого тоже. Это очень поможет мне позже в этом проекте. Вы случайно не знаете, как также немного увеличить размер фигуры? Еще раз спасибо за вашу помощь!
2. @JackNovozinsky добро пожаловать! Если вы хотите увеличить размер фигуры, вам нужно будет передать
tuple
представляющий размер фигуры в дюймахfigsize
аргументplt.subplots
. В документации, приведенной здесь , будет объяснено больше!3. @JackNovozinsky Я должен также добавить, что вы можете использовать
sharex
параметрplt.subplots
для вашей текущей проблемы, но это может быть немного менее интуитивно понятным.