如何使用ggplot(Python)绘制多个y变量

时间:2016-09-08 18:22:46

标签: python time-series facet python-ggplot

我在Pandas数据框中有以下数据:

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("/WEB-INF/templates/");
    }

}

我有兴趣构建一个线图,以显示ABC和XYZ公司的“收入”和“利润”变量如何随着时间的推移使用 facet grid 进行演变,如下所示:

Company     Date                 Revenue     Profit
ABC         08/21/16 00:00:00    500         300
ABC         08/22/16 00:00:00    600         200
ABC         08/23/16 00:00:00    650         400
ABC         08/24/16 00:00:00    625         450
ABC         08/25/16 00:00:00    675         500
ABC         08/26/16 00:00:00    680         410
XYZ         08/21/16 00:00:00    300         290
XYZ         08/22/16 00:00:00    510         400
XYZ         08/23/16 00:00:00    490         450
XYZ         08/24/16 00:00:00    475         270
XYZ         08/25/16 00:00:00    610         500
XYZ         08/26/16 00:00:00    400         250

首先,在这种情况下,甚至可能使用facet_wrap吗?

如果是这样,那么我理解我必须使用df = pd.read_csv('C:\\Users\\Desktop\\Files\\Projections', sep = ',') df.columns = ['Company', 'Date', 'Revenue', 'Profit'] df['Date'] = pd.to_datetime(df['Date'], errors = 'coerce') ggplot(df, aes(x='Date')) + \ geom_line(aes(y='Revenue'), color='blue') + \ geom_line(aes(y='Profit'), color='red') + \ xlab("date") + ylab("value") + ggtitle("Projections")) + \ scale_x_date() + \ facet_wrap('Company', scales='free') (大概是因为数据必须是'long'格式)。但是,在这一点上,我不明白为什么或为什么(即使在审查了这个问题之后:Is it possible to plot multiline chart on Python ggplot?)。

我认为可以使用:

melt

绘制“收入”和“利润”变量。但是,这会导致以下错误消息。

geom_line(aes(y='Revenue'), color='blue') + \ geom_line(aes(y='Profit'), color='red')

是否有人知道如何使用GgplotError: u'geom_line requires the following missing aesthetics: y'解决没有?或者,如果绝对有必要使用melt,那么在上面我提供的示例中,或许可以直截了当地确定如何做到这一点?

我一直在撞墙试图解决这个问题(甚至尝试使用Seaborn,但x轴日期有一个错误!)。非常感谢任何帮助。

我甚至愿意使用Matplotlib ......

提前致谢!

0 个答案:

没有答案