gpt4 book ai didi

r - 如何通过ggplot2中的facet_wrap对多个绘图进行排序

转载 作者:行者123 更新时间:2023-12-02 00:09:59 35 4
gpt4 key购买 nike

我有一个如下所示的数据集,大约有 100 万行,如下所示:

orderid     prodid      priceperitem    date        category_eng    
3010419 2 62420 18.90 2014-10-09 roll toliet paper

我目前正在绘制这些产品散点图,使用 priceperitem 作为 y 轴,date 作为 x 轴。我还根据这些产品的价格随时间变化的系数对这些行进行了排序。我在另一个数据集中总结了这些结果,如下所示:

prodid       mean        count           sd           cv
424657 12.7124 5541.0000 10.239 80.54999886
158726193 23.7751 1231.0000 17.7567 74.68621596

我使用以下代码同时获取许多产品的散点图:

ggplot(Roll50.last, aes(x=date, y=priceperitem)) + geom_point() + facet_wrap(~prodid)

但我想根据我在另一个 data.frame 中总结的这些产品的 CV 来对图进行排序。我想知道是否有一种方法可以让我指定我想按另一个数据框中的值的顺序对面板图进行排序。

下面是一个小样本数据。基本上,这个想法是获得不同产品的价格 cv = s.d./mean。我想按照CV从最高到最低的顺序绘制这些产品的散点图。

#generate reproducible example
id = c(1: 3)
date = seq(as.Date("2011-3-1"), as.Date("2011-6-8"), by="days")

id = rep(c(1,2,3,4),each=25)
set.seed(01)
id = sample(id)

price = rep(c(1:20), each = 5)
price = sample(price)
data = data.frame(date, id, price)

最佳答案

您可以将 prodid 转换为因子,并根据变异系数的大小设置因子类别的顺序。例如,假设带有 cv 值的数据框称为 cv。然后,根据 cv 的值对 prodid 进行排序:

Roll50.last$prodid = factor(Roll50.last$prodid, 
levels = cv$prodid[order(cv$cv, decreasing=TRUE)])

现在,当您绘制数据时,prodid 方面将按 cv 的大小递减进行排序。

关于r - 如何通过ggplot2中的facet_wrap对多个绘图进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30835716/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com