Python seaborn中的镶嵌面和x轴选择
我正在使用这个数据框,其中包含来自yahoo finance的比特币数据。我设置了加密货币列表,我希望: A.将x轴限制为最近2个月 B试着把所有的图放在一起,就像在一个图表中把一个图刻面到另一个图一样,就像在R的ggplot中一样Python seaborn中的镶嵌面和x轴选择,python,pandas,seaborn,Python,Pandas,Seaborn,我正在使用这个数据框,其中包含来自yahoo finance的比特币数据。我设置了加密货币列表,我希望: A.将x轴限制为最近2个月 B试着把所有的图放在一起,就像在一个图表中把一个图刻面到另一个图一样,就像在R的ggplot中一样 import pandas as pd from pandas import Series,DataFrame import numpy as np import matplotlib.pyplot as plt import seaborn as sns sns.
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('whitegrid')
%matplotlib inline
# For reading stock data from yahoo
from pandas.io.data import DataReader
# For time stamps
from datetime import datetime
# For division
from __future__ import division
tech_list = ['BTC','TTC','DGC','DEE','PPC']
end = datetime.now()
start = datetime(end.year - 1,end.month,end.day)
for stock in tech_list:
# Set DataFrame as the Stock Ticker
globals()[stock] = DataReader(stock,'yahoo',start,end)
DEE['Volume'].plot(legend=True,figsize=(10,4))
我应该改变时间定义还是seaborn本身?
谢谢您的问题与
seaborn
无关,它是基本问题
matplotlib
stuff<代码>seaborn仅更改中人物的样式
您的案例,因此我将其从下面提供的代码中排除,但您可以
如果要更改样式,请导入它
要获取过去两个月的数据,您应该在今天之前的两个月内开始。使用relativedelta很容易:
from dateutil.relativedelta import relativedelta
start = dt.datetime(end.year,end.month,end.day) - relativedelta(months=2)
如果使用padnas.DataFrame.plot()
绘图,则更改x轴的限制将更加痛苦。但是,如果要导入所有数据,然后只选择最近2个月的数据,则可以使用相同的relativedelta
技巧,但要使用索引,如下所示:
DEE.loc[DEE.index >= end - relativedelta(months=2),'Volume'].plot()
至于把这些图表放在一起,你的问题措词不清楚,所以我只能猜测你的意思是把所有股票作为子地块放在另一个下面,如下所示:
DEE.loc[DEE.index >= end - relativedelta(months=2),'Volume'].plot()
我重写了您的代码以执行此操作:
import pandas as pd
# For reading stock data from yahoo
from pandas.io.data import DataReader
import matplotlib.pyplot as plt
%matplotlib inline
# For time stamps
import datetime as dt
from dateutil.relativedelta import relativedelta
end = dt.datetime.now()
start = dt.datetime(end.year-1,end.month,end.day)
tech_list = dict({'BTC':None,'TTC':None,'DGC':None,'DEE':None,'PPC':None})
for stock in tech_list.keys():
tech_list[stock] = DataReader(stock,'yahoo',start,end)
months_to_plot = relativedelta(months=2)
fig = plt.figure(figsize=(8,10))
for (n,stock) in enumerate(tech_list.keys()):
ax = fig.add_subplot(len(tech_list),1,n)
tech_list[stock].loc[tech_list[stock].index >= end - months_to_plot,'Volume'].plot()
ax.set_title(stock)
plt.tight_layout()
另外,如果你想得到一个简洁的答案,请在以后的提问中更加明确。您提供的代码包含额外的行,这对于您的问题是不必要的,这使得您更难理解您到底想做什么。另一方面,你的问题并没有尽可能详细