我有以下代码:
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中并排绘制所有符号?
答案 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'])
答案 2 :(得分:2)
在这里我使用了数据框的绘图功能,而且我喜欢以不同的颜色绘图,所以我做了这个小技巧。
#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()
中的当前指数。我们使用该索引来决定将图放置在何处。