2016-08-02 1553 views
10

具体来说,这是在facet_grid中。已经广泛搜索类似的问题,但不清楚语法或它的去向。我想要的是,y轴上的每个数字在小数点后有两位数,即使尾数是0。这是scale_y_continuous或element_text中的参数还是...?如何更改ggplot2中轴标签上的小数位数?

row1 <- ggplot(sector_data[sector_data$sector %in% pages[[x]],], aes(date,price)) + geom_line() + 
    geom_hline(yintercept=0,size=0.3,color="gray50") + 
    facet_grid(~ sector) + 
    scale_x_date(breaks='1 year', minor_breaks = '1 month') + 
    scale_y_continuous(labels = ???) + 
    theme(panel.grid.major.x = element_line(size=1.5), 
     axis.title.x=element_blank(), 
     axis.text.x=element_blank(), 
     axis.title.y=element_blank(), 
     axis.text.y=element_text(size=8), 
     axis.ticks=element_blank() 
) 

回答

19

从帮助?scale_y_continuous,参数 '标签' 可以是一个函数:

标签之一:

  • NULL为没有标签

  • 放弃()为由变换对象计算的默认标签

  • 一个特征向量给标签(必须是相同的长度,断裂)

  • ,是以休息作为输入并返回标签作为输出

我们将使用最后一个选项的函数,一个将breaks作为参数并返回2位小数的函数。

#Our transformation function 
scaleFUN <- function(x) sprintf("%.2f", x) 

#Plot 
library(ggplot2) 
p <- ggplot(mpg, aes(displ, cty)) + geom_point() 
p <- p + facet_grid(. ~ cyl) 
p + scale_y_continuous(labels=scaleFUN) 

enter image description here