R 强制ggplot2 y轴标签仅为整数,并提供适当的中断

R 强制ggplot2 y轴标签仅为整数,并提供适当的中断,r,ggplot2,R,Ggplot2,我正在为离散数据绘制条形图,默认情况下,ggplot会为我调整y轴,但会以0.5的间隔给我y轴标签,这是我不喜欢的。我尝试了缩放y\u离散,但每个离散值都会给出y轴打断,这也不好 我是否可以强制y轴打断仅由整数组成,并为每个面提供适当的打断 示例脚本如下所示: set.seed(1) chart.data <- data.frame(x=rep(LETTERS[1:10],3), y=c(sample(0:10,10,replace=TRU

我正在为离散数据绘制条形图,默认情况下,ggplot会为我调整y轴,但会以0.5的间隔给我y轴标签,这是我不喜欢的。我尝试了
缩放y\u离散
,但每个离散值都会给出y轴打断,这也不好

我是否可以强制y轴打断仅由整数组成,并为每个面提供适当的打断

示例脚本如下所示:

set.seed(1)
chart.data <- data.frame(x=rep(LETTERS[1:10],3),
                         y=c(sample(0:10,10,replace=TRUE),
                             sample(0:100,10,replace=TRUE),
                             sample(0:1000,10,replace=TRUE)),
                         group=sort(rep(1:3,10)))
chart <- ggplot(data=chart.data,aes(x=x,y=y))
chart <- chart + geom_bar(stat="identity")
chart <- chart + scale_y_discrete()
chart <- chart + facet_wrap(facets=~group,nrow=1,scale="free_y")
set.seed(1)

chart.data首先,由于y数据是连续的,因此应使用
scale\u y\u continuous()
。在这个函数中,您可以添加参数
breaks=pretty\u breaks()
(添加库
scales
以使用函数
pretty\u breaks()
)。如果在
pretty_breaks()
中没有提供任何数字,那么在这种情况下,您将得到y轴上的整数。您可以设置要显示的中断数,例如,
pretty_breaks(4)
,但对于范围为0-10的第一个面,它仍将仅显示整数值,并且中断数将更大以获得“nice”数字


您还可以直接指定函数中的断点。下面是一些您如何做到这一点的示例。另请查看
?离散\u刻度
中的breaks参数

chart + scale_y_discrete(breaks=function(n) c(0, floor(max(n)/2), max(n)))    
chart + scale_y_discrete(breaks=function(n) n[floor(length(n)/5)*1:5+1])
chart + scale_y_discrete(breaks=function(n) 10^(ceiling(log10(max(n)))-1)*2*0:5)

你能解释一下你的解决方案吗?执行解决方案后,
y轴
的标签丢失。这不是重复的,因为该问题没有回答问题。这仍然会跳过一些值。
chart + scale_y_discrete(breaks=function(n) c(0, floor(max(n)/2), max(n)))    
chart + scale_y_discrete(breaks=function(n) n[floor(length(n)/5)*1:5+1])
chart + scale_y_discrete(breaks=function(n) 10^(ceiling(log10(max(n)))-1)*2*0:5)