在ggplot中设置y轴中断
Posted
技术标签:
【中文标题】在ggplot中设置y轴中断【英文标题】:Setting y axis breaks in ggplot 【发布时间】:2022-01-12 00:22:15 【问题描述】:我在代码中设置中断时遇到困难,我尝试添加 break=seq(0, 100, by=20) 但似乎无法使其正常工作。本质上,我希望 Y 轴从 0-100 变为每 20 个刻度。
YearlyCI <- read.table(header=T, text='
Station Year CI se
M-25 2013 56.57098 1.4481561
M-45 2013 32.39036 0.6567439
X-2 2013 37.87488 0.7451653
M-25 2008 74.5 2.4
M-45 2008 41.6 1.1
M-25 2004 82.2 1.9
M-45 2004 60.6 1.0
')
library(ggplot2)
ggplot(YearlyCI, aes(x=Year, y=CI, colour=Station,group=Station)) +
geom_errorbar(aes(ymin=CI-se, ymax=CI+se), colour="black", width=.2) +
geom_line(size=.8) +
geom_point(size=4, shape=18) +
coord_cartesian(ylim = c(0, 100)) +
xlab("Year") +
ylab("Mean Condition Index") +
labs(fill="") +
theme_bw() +
theme(legend.justification=c(1,1), legend.position=c(1,1))
【问题讨论】:
您是如何尝试添加 brks 的?+ scale_y_continuous(breaks = seq(0,100,by = 20)
应该可以工作
添加有效。分别添加 scale_y_continuous 和 coord_cartesian 代码,我不知道你可以一起使用它们。非常感谢!
【参考方案1】:
你需要添加
+ scale_y_continuous(breaks = seq(0, 100, by = 20))
编辑:根据下面的评论,这仅在轴已经在适当范围内时才有效。要强制执行范围,您可以扩展上述代码,如下所示:
+ scale_y_continuous(limits = c(0, 100), breaks = seq(0, 100, by = 20))
【讨论】:
这仅适用于您的数据已经在 0 到 100 之间的情况。如果不是,并且您想强制图表显示从 0 到 100 的 Y 轴(每 20 次中断)-例如均衡并排显示的多个图的轴 - 添加limits=c(0,100)
,如下所示:+ scale_y_continuous(limits=c(0,100), breaks=seq(0,100, by = 20))
如果您想使用数据的 y 限制而不是指定它,您将如何更改它?我尝试了+scale_y_continuous(breaks = seq(0, ylim(), by = 500
,但错误提示“没有适用于 NULL 类对象的‘限制’的适用方法”。我的数据框是长格式的。谢谢
@JJGabe max_val <- max(your_variable)
然后scale_y_continuous(breaks = seq(0, max_val, by = 500), limits=c(0, max_val))
以上是关于在ggplot中设置y轴中断的主要内容,如果未能解决你的问题,请参考以下文章
R语言ggplot2可视化使用不连续的y轴中断的Y轴来可视化数值分布差异很大的数据实战:把数据轴分为两个区间或者多个区间来匹配不同区间数据的可视化(因为有的数据可能10附近,有的数值可能1W附近)
R语言ggplot2可视化强制设置x轴y轴坐标的起始点为0或者其他实战
R语言ggplot可视化:自定义设置y轴坐标轴线条的颜色(customize setting y axis line color of ggplot2 graph)