我创建了一个脚本来在一个对象中创建多个绘图。我正在寻找的结果是两个图,一个在另一个上,每个图具有不同的y轴刻度,但x轴是固定的 - 日期。但是,只有一个图(顶部)被正确创建,底部图是可见的但是空的,即geom_line
不可见。此外,第二个图的y轴与值的范围不匹配 - 最小值到最大值。我也尝试使用facet_grid (scales="free")
,但y轴没有变化。第二个图的y轴范围为0到0.05。
我将日期范围限制在过去几周。这是我正在使用的代码:
df = df.set_index('date')
weekly = df.resample('w-mon',label='left',closed='left').sum()
data = weekly[-4:].reset_index()
data= pd.melt(data, id_vars=['date'])
pplot = ggplot(aes(x="date", y="value", color="variable", group="variable"), data)
#geom_line()
scale_x_date(labels = date_format('%d.%m'),
limits=(data.date.min() - dt.timedelta(2),
data.date.max() + dt.timedelta(2)))
#facet_grid("variable", scales="free_y")
theme_bw()
数据框样本(df),它是包含每个变量x和a的值的每日数据集,在这种情况下是' date'是索引:
date x a
2016-08-01 100 20
2016-08-02 50 0
2016-08-03 24 18
2016-08-04 0 10
数据框样本(to_plot) - 每周概述:
date variable value
0 2016-08-01 x 200
1 2016-08-08 x 211
2 2016-08-15 x 104
3 2016-08-22 x 332
4 2016-08-01 a 8
5 2016-08-08 a 15
6 2016-08-15 a 22
7 2016-08-22 a 6
很抱歉没有添加df数据帧。
答案 0 :(得分:2)
您对剧情指令geom_line()
,scale_x_date()
等的调用在您的剧本中独立存在;你没有将它们连接到你的绘图对象。因此,它们对你的情节没有任何影响。
为了将绘图指令应用于现有绘图对象,请使用图形语言和"添加"通过将它们与+
运算符连接,将它们添加到绘图对象中。
结果(按预期):
完整的脚本:
from __future__ import print_function
import sys
import pandas as pd
import datetime as dt
from ggplot import *
if __name__ == '__main__':
df = pd.DataFrame({
'date': ['2016-08-01', '2016-08-08', '2016-08-15', '2016-08-22'],
'x': [100, 50, 24, 0],
'a': [20, 0, 18, 10]
})
df['date'] = pd.to_datetime(df['date'])
data = pd.melt(df, id_vars=['date'])
plt = ggplot(data, aes(x='date', y='value', color='variable', group='variable')) +\
scale_x_date(
labels=date_format('%y-%m-%d'),
limits=(data.date.min() - dt.timedelta(2), data.date.max() + dt.timedelta(2))
) +\
geom_line() +\
facet_grid('variable', scales='free_y')
plt.show()