如何与forloop并排绘制图表

时间:2020-01-20 19:43:24

标签: python-3.x pandas matplotlib

我有以下代码:

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

这是我的问题。如何在forloop中并排绘制所有符号?

4 个答案:

答案 0 :(得分:4)

您可以使用上面的代码并指定self.apply = ApplyPage(foobar=self.projectlistscreen) 参数。

figsize

如果您希望所有图都在同一行上,只需修改fig, ax = plt.subplots(1, len(stocks), figsize=(20, 10)) 的第一个参数,它是包含子图框的水平轴的长度。

例如,如果您希望每个图都是10x10的:

figsize

答案 1 :(得分:2)

像这样指定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

答案 2 :(得分:2)

在这里我使用了数据框的绘图功能,而且我喜欢以不同的颜色绘图,所以我做了这个小技巧。

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()

答案 3 :(得分:0)

您几乎是正确的。您应该将子图放置在for循环内。

i

请注意,我们遍历了股票,但也跟踪Golf_File = open('golf.txt', 'w') names = [] scores = [] for line in Golf_File: input("Please enter a players name: ") if name !='': break score = input("Please input the players score: ") if name != '' and score !="": golf.txt.write(name + "\n")(str(score) + "\n") Golf_File.close() EDIT = for line in Golf_File: Golf_File = open('golf.txt', 'w') names = input("Please enter a players name: ") score = input("Please input the players score: ") Golf_File.write(str(names) + "\n") Golf_File.write(str(scores) + "\n") Golf_File.close() 中的当前指数。我们使用该索引来决定将图放置在何处。