繁体   English   中英

在python ggplot中订购构面

[英]Ordering the facet in python ggplot

我有一个数据print df.head() df ,其中print df.head()给出了:

journey_time                  time_stamp    day_name  day_no  week_no
240           289 2017-03-06 00:03:58   Monday       0       10
241           288 2017-03-06 00:08:58   Monday       1       10
242           291 2017-03-06 00:13:58   Monday       1       10
243           289 2017-03-06 00:18:59   Monday       1       10
244           295 2017-03-06 00:23:58   Monday       2       10
243           289 2017-03-06 00:18:59   Monday       2       10
244           295 2017-03-06 00:23:58   Monday       2       10

我基本上每天都有一系列journey_time值,范围为day_no

p = ggplot(aes(x='time_stamp',y='journey_time'),data=df) + scale_x_date(labels = date_format("%H:%M"), date_minor_breaks = "1 hour") + geom_line() + labs(x="Time", y="journey_time (seconds)") + facet_grid('day_name',scales='free_x')

这可以正常工作,因为我得到了7个水平图。 但是,日期顺序不正确(星期五,星期一,星期六等)。 如何按day_no记录排序?

在此处输入图片说明

默认情况下, ggplot似乎按字母顺序放置分类变量,但是您可以使用Pandas中的category dtype来指定自己的顺序:

df.day_name = pd.Categorical(df.day_name, 
                             ordered=True,
                             categories=["Monday", "Tuesday", "Wednesday", 
                                         "Thursday", "Friday", "Saturday", 
                                         "Sunday"])

这在我的测试环境(Python 3.4,Pandas 0.18.0,ggplot 0.11.5)中按预期工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM