Как строить графики рядом с петлей - PullRequest
4 голосов
/ 20 января 2020

У меня есть следующий код:

import pandas as pd
from pandas import datetime
from pandas import DataFrame as df
import matplotlib
from pandas_datareader import data as web
import matplotlib.pyplot as plt
import datetime
import numpy as np

stocks = 'GE','F' #<-- In this case there are just 2 symbols but this could be more 
start = datetime.date(2000,1,1)
end = datetime.date.today()

data = web.DataReader(stock, 'yahoo',start, end)

for stock in stocks:
    data.plot(y='Close')
plt.subplot(1,1,2) #<-- Trouble here

Вот мой вопрос. Как я могу расположить все символы рядом внутри Forl oop?

Ответы [ 4 ]

3 голосов
/ 31 января 2020

Вы можете взять приведенный выше код и указать параметр figsize.

fig, ax = plt.subplots(1, len(stocks), figsize=(20, 10))

Если вы хотите, чтобы все ваши графики находились в одной строке, просто измените первый параметр figsize, который является длиной горизонтальной оси прямоугольника, в котором содержатся субплоты.

Например, если вы хотите, чтобы каждый график был 10x10:

fig, ax = plt.subplots(1, len(stocks), figsize=(len(stocks)*10, 10))
2 голосов
/ 05 февраля 2020

Здесь я использовал функцию plot в dataframe. Также мне нравится рисовать в разных цветах, поэтому я делаю этот маленький трюк.

My Result Image

#CODE
import pandas as pd
from pandas import datetime
from pandas import DataFrame as df
import matplotlib
from pandas_datareader import data as web
import matplotlib.pyplot as plt
import datetime
import numpy as np

colors = ["b",'g','r','c','m','y','k']

stocks = 'GE','F' #<-- In this case there are just 2 symbols but this could be more 
start = datetime.date(2000,1,1)
end = datetime.date.today()

data = web.DataReader(stocks, 'yahoo',start, end)

# THIS MAKES A GRID OF 1 ROW and len(stocks) COLUMN and figure size as (width, height) in inches.
fig, axs = plt.subplots(1, len(stocks), figsize=(30, 5))
i = 0

#iterate for each stock
for stock in stocks:
    # i'th close stock will plot on i'th axs (Note: Whatever be your grid)
    data["Close"][stock].plot(ax=axs[i],color=colors[i%len(colors)])
    i += 1

#show plot
plt.show()
2 голосов
/ 20 января 2020

Укажите количество строк и столбцов для plt.subplots() следующим образом:

stocks = ['GE','F']
fig,ax = plt.subplots(1,len(stocks))

И постройте каждый подзаговор так:

for i,stock in enumerate(stocks): 
    data = web.DataReader(stock,'yahoo',start,end) 
    ax[i].plot(data.index,data['Close']) 

Результат: enter image description here

0 голосов
/ 06 февраля 2020

Вы были почти правы. Вы должны разместить подспоток внутри для l oop.

n = 2 # number of stocks
for i, stock in enumerate(stocks):
    data.plot(y='Close')
    plt.subplot(1,n,i+1)

Обратите внимание, что мы l oop над акциями, но также отслеживаем текущий индекс в i. Мы используем этот индекс, чтобы решить, где разместить участки.

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