2014-12-01 111 views
0

我要在纵坐标刻度(y轴)上显示最小值和最大值的情况下,我将绘制一些变量(在箱形图中,但无关紧要) 。在最小值和最大值之间均匀分配y轴刻度

require(ggplot2) 

y_min <- min(PlantGrowth$weight) 
y_max <- max(PlantGrowth$weight) 

ggplot(PlantGrowth, aes(x=group, y=weight)) + 
    geom_boxplot() + 
    ylim(y_min, y_max) 

结果: No minimum and maximum display

我知道,ylim()不进行直接编辑y轴的标签,但设置另一个范围时,不小心工作:

ggplot(PlantGrowth, aes(x=group, y=weight)) + 
    geom_boxplot() + 
    ylim(0, 8) 

直截了当的解决方案可能是自己定义滴答:

ggplot(PlantGrowth, aes(x=group, y=weight)) + 
    geom_boxplot() + 
    scale_y_continuous(breaks=c(seq(y_min, y_max, 1.25), y_max)) 

这几乎总是导致y轴的最后一个和最后一个tick的变化距离。它需要试验seq()的副参数,直到我们有一个均匀勾选的包含最小值和最大值的y轴。有没有一种优雅的方式?不一定是ggplot2()解决方案,但可以在seq()上运行?

回答

4

您似乎在寻找length.out参数seq而不是by参数。也就是说,

scale_y_continuous(breaks = seq(y_min, y_max, length.out = 6)) 

您可能想包装序列中round(),以避免不必要的精度。

相关问题