首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图>8的Python问题(股票和图例)是截止的。

图>8的Python问题(股票和图例)是截止的。
EN

Stack Overflow用户
提问于 2014-03-20 19:58:35
回答 1查看 2K关注 0票数 3

首先,让我说,Python的great是一些伟大的东西的开始,对于开发人员投入工作来说是值得称赞的。目前,我在同一情节上有两个主要问题。如果我绘制8只股票或更少的股票,图像看起来很好,除了图例从图形区域运行(问题1)。如果我绘制了8个以上的股票,那么这个图就会触发一些明显不代表数据的不稳定的行。此外,图例不会调整大小,而是去掉额外的股票代码(问题2)。任何帮助都是非常感谢的。谢谢!

“体面地块法典”:

代码语言:javascript
复制
import datetime
from ggplot import *
import pandas.io.data as web
import pandas as pd
import numpy as np

start = datetime.datetime(2014,1,1)
end = datetime.datetime(2014, 3,19)

stocks = ['APO','AVG','FI','ANIK','CELG','PACW','CBOE','BIIB']

stockData = {}
for ticker in stocks:
    stockData[ticker] = web.get_data_yahoo(ticker, start, end)

price = pd.DataFrame({tic: data['Adj Close'] for tic, data in stockData.iteritems()})

returns = price.pct_change()
returns = returns.apply(cumsum)

rt = returns.index
returns['Date'] = rt


# plotting the cum performance for each security

ret = pd.melt(returns, id_vars='Date') 
plot = ggplot(aes(x='Date', y='value', color='variable'),data=ret) +geom_line()

# plotting the equity curve of the theoretical portfolio

zt = returns
del zt['Date']
zt = zt.apply(np.sum, axis=1)
z = pd.DataFrame(zt, index=zt.index)
z['Date'] = rt
z.columns = ['equity curve', 'Date']


ret2 = pd.melt(z, id_vars='Date') 
plot2 = ggplot(aes(x='Date', y='value'),data=ret2) +geom_line()

print plot
print plot2

不良情节代码:

代码语言:javascript
复制
import datetime
from ggplot import *
import pandas.io.data as web
import pandas as pd
import numpy as np

start = datetime.datetime(2014,1,1)
end = datetime.datetime(2014, 3,19)

stocks = ['APO','AVG','FI','ANIK','CELG','PACW','CBOE','BIIB','ISIS', 'SDRL'] # <-- notice two additional tickers

stockData = {}
for ticker in stocks:
    stockData[ticker] = web.get_data_yahoo(ticker, start, end)

price = pd.DataFrame({tic: data['Adj Close'] for tic, data in stockData.iteritems()})

returns = price.pct_change()
returns = returns.apply(cumsum)

rt = returns.index
returns['Date'] = rt


# plotting the cum performance for each security

ret = pd.melt(returns, id_vars='Date') 
plot = ggplot(aes(x='Date', y='value', color='variable'),data=ret) +geom_line()

# plotting the equity curve of the theoretical portfolio

zt = returns
del zt['Date']
zt = zt.apply(np.sum, axis=1)
z = pd.DataFrame(zt, index=zt.index)
z['Date'] = rt
z.columns = ['equity curve', 'Date']


ret2 = pd.melt(z, id_vars='Date') 
plot2 = ggplot(aes(x='Date', y='value'),data=ret2) +geom_line()

print plot
print plot2
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-21 10:15:47

对于问题2,这是因为ggplot没有颜色,您可以添加更多颜色来解决问题,只需将以下代码添加到代码的开头:

代码语言:javascript
复制
import ggplot as gg
gg.colors.COLORS.extend(["#ff0000", "#00ff00", "#0000ff"]) 

对于问题1,我们似乎需要在创建图形之后放置图例:

代码语言:javascript
复制
ret = pd.melt(returns, id_vars='Date').dropna()
plot = ggplot(aes(x='Date', y='value', color='variable'), data=ret) +geom_line()
fig = plot.draw()
ax = fig.axes[0]
offbox = ax.artists[0]
offbox.set_bbox_to_anchor((1, 0.5), ax.transAxes)

结果如下:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22543776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档