根据ggplot2中最后一个分面网格的递减值对条形图的Y轴进行排序
Posted
技术标签:
【中文标题】根据ggplot2中最后一个分面网格的递减值对条形图的Y轴进行排序【英文标题】:Sorting Y-axis of barplot based on the decresing value of last facet grid in ggplot2 【发布时间】:2021-10-07 17:08:09 【问题描述】:问题: 我正在尝试根据具有公共 Y 轴标签的最后一个方面组“Step4”的递减值对条形图的 Y 轴进行排序。有一些建议可以对它们内部的所有构面组进行排序,但是如何处理一个构面组的公共 y 轴标签和值。我附上了初始图的示例数据和代码以理解问题。 提前致谢。
数据:Download the sample data here
代码:
library(ggplot2)
library(reshape2)
#reading data
data <- read.csv(file = "./sample_data.csv", stringsAsFactors = TRUE)
#reshaping data in longer format using reshape::melt
data.melt <- melt(data)
#plotting the data in multi-panel barplot
ggplot(data.melt, aes(x= value, y=reorder(variable, value))) +
geom_col(aes(fill = Days), width = 0.7) +
facet_grid(.~step, scales = "free")+
theme_pubr() +
labs(x = "Number of Days", y = "X")
图表:Barplot Graph for the sample data
【问题讨论】:
【参考方案1】:总结最后一个'step'
的值并从数据中提取级别。
library(dplyr)
library(ggplot2)
lvls <- data.melt %>%
arrange(step) %>%
filter(step == last(step)) %>%
#Or
#filter(step == 'Step4') %>%
group_by(variable) %>%
summarise(sum = sum(value)) %>%
arrange(sum) %>%
pull(variable)
data.melt$variable <- factor(data.melt$variable, lvls)
ggplot(data.melt, aes(x= value, y= variable)) +
geom_col(aes(fill = days), width = 0.7) +
facet_grid(.~step, scales = "free")+
theme_pubr() +
labs(x = "Number of Days", y = "X")
【讨论】:
以上是关于根据ggplot2中最后一个分面网格的递减值对条形图的Y轴进行排序的主要内容,如果未能解决你的问题,请参考以下文章
R语言ggplot2可视化在分面图(facet_grid)的条形图上添加计数(count)或者百分比(percent)标签实战
如何根据分面包装中的 2 个组中的 1 个对条形图进行排序?
R语言ggplot2可视化分面图(faceting):ggplot2可视化分面图并移除分面图之间的边框线以及分面图之间的间隙(Remove Spacing between Panels)