R 以个性化的顺序重新排列ggplot中的条

R 以个性化的顺序重新排列ggplot中的条,r,R,我用ggplot绘制了以下数据帧 day <- 1:10 revenue <- rnorm(5, mean=5) gross_profit <- rnorm(5,mean=5) operating_income <- rnorm(5,mean=5) net_income <- rnorm(5,mean=5) df <- data.frame(day, revenue, gross_profit, operating_income, net_income) d

我用ggplot绘制了以下数据帧

day <- 1:10
revenue <- rnorm(5, mean=5)
gross_profit <- rnorm(5,mean=5)
operating_income <- rnorm(5,mean=5)
net_income <- rnorm(5,mean=5)
df <- data.frame(day, revenue, gross_profit, operating_income, net_income)

df_pivot <- pivot_longer(df, c(revenue,gross_profit, operating_income, net_income), names_to = "Item")


ggplot(df_pivot, aes(x=day, y=value, fill=Item)) +
geom_bar(stat="identity", position=position_dodge())

day将
Item
设置为一个因子,并按照上面指定的顺序设置其级别:



df_pivot$Item您还可以从package
ForCAT
中使用函数
fct_relevel
。这与亲爱的天狼星提出的解决方案基本相同,我只是想让你知道,tidyverse解决方案也存在:

package(forcats)

df_pivot %>%
  mutate(Item = fct_relevel(Item, c("revenue", "gross_profit", "operating_income", "net_income"))) %>%
  ggplot(aes(x=day, y=value, fill=Item))+
  geom_bar(stat="identity", position=position_dodge())