Создание визуализации с 2 шкалами по оси Y

В настоящее время я пытаюсь сопоставить цену видеокарты 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 шкалами по оси Y

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

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

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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')

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

Это прекрасно работает! Спасибо большое, что тоже объяснили. Это очень поможет мне позже в этом проекте. Вы случайно не знаете, как немного увеличить размер фигуры? Еще раз спасибо за помощь!

Jack Novozinsky 07.04.2019 07:56

@JackNovozinsky Добро пожаловать! Если вы хотите увеличить размер фигуры, вам нужно передать tuple, представляющий размер фигуры в дюймах, в аргумент figsizeplt.subplots. Документация здесь объяснит больше!

gmds 07.04.2019 07:58

@JackNovozinsky Я также должен добавить, что вы можете использовать параметр sharexplt.subplots для своей текущей проблемы, но это может быть немного менее интуитивно понятным.

gmds 07.04.2019 08:05

Другие вопросы по теме