我有一個如下所示的資料框:
group <- c("A", "A", "B","B","B","C","B","A","B","B","C","B","B","C","B","B","B","B","B","C")
name <- c("nam1","nam2","nam3","nam4","nam5","nam6","nam7","nam8","nam9","nam10","nam11","nam12","nam13","nam14","nam15","nam16","nam17","nam18","nam19","nam20")
obs <- c(7500,950,450,160,150,220,110,60,40,40,40,15,15,15,10,10,10,10,10,10)
stud <- c(10,2,3,5,6,2,2,2,2,1,2,2,2,3,2,2,2,2,1,1)
df <- data.frame(group,name,obs,stud)
我需要做一個條形圖來顯示每個名稱的 obs 數量,每個條形頂部的螺柱數量,以及按組按升序排列的條形。
這是我所做的:
ggbarplot(df, x = "name", y = "obs",
fill = "group",
color = "white",
palette = "jco",
x.text.angle = 90,
label = stud, label.pos="out", lab.size = 3, order = c("nam20","nam14","nam11","nam6","nam19","nam18","nam17","nam16","nam15","nam13","nam12","nam10","nam9","nam7","nam5","nam4","nam3","nam8","nam2","nam1"),
xlab = "name",
ylab = "obs")
我得到了這個:

現在我只需要折疊上面 obs 值的 y 軸,比如 500,以便使所有條形更加可見,即使是那些對應于較小 obs 值的條形。
提前致謝。
uj5u.com熱心網友回復:
幾個選項:嘗試scale_y_log10或ggbreak::scale_y_break...
您必須使用函式或其他ggplot引數進行微調以獲得所需的外觀。
library(ggpubr)
library(ggplot2)
library(ggbreak)
ggbarplot(df, x = "name", y = "obs",
fill = "group",
color = "white",
palette = "jco",
x.text.angle = 90,
label = stud, label.pos="out", lab.size = 3, order = c("nam20","nam14","nam11","nam6","nam19","nam18","nam17","nam16","nam15","nam13","nam12","nam10","nam9","nam7","nam5","nam4","nam3","nam8","nam2","nam1"),
xlab = "name",
ylab = "obs",
title = "Log scale")
scale_y_log10()

ggbarplot(df, x = "name", y = "obs",
fill = "group",
color = "white",
palette = "jco",
x.text.angle = 90,
label = stud, label.pos="out", lab.size = 3, order = c("nam20","nam14","nam11","nam6","nam19","nam18","nam17","nam16","nam15","nam13","nam12","nam10","nam9","nam7","nam5","nam4","nam3","nam8","nam2","nam1"),
xlab = "name",
ylab = "obs",
title = "ggbreak")
scale_y_continuous(limits = c(0, 7600))
scale_y_break(c(1000, 7200), scales = 0.3)

由reprex 包(v2.0.1)于 2021 年 12 月 11 日創建
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/381236.html
