ggplot,ggplotly,scale_y_continuous,ylim和百分比

时间:2016-05-22 14:46:16

标签: r ggplot2

我想绘制一个y轴为百分比的图表:

p = ggplot(test, aes(x=creation_date, y=value, color=type)) +
  geom_line(aes(group=type)) +
  scale_colour_manual(values=c("breach"="red","within_promise"="green","before_promise"="blue")) +
geom_vline(xintercept=c(as.numeric(as.Date('2016-05-14'))),linetype="dotted") + 
  scale_y_continuous(labels=percent)

ggplotly()

enter image description here

现在我想将y轴上限设置为100%

p = ggplot(test, aes(x=creation_date, y=value, color=type)) +
  geom_line(aes(group=type)) +
  scale_colour_manual(values=c("breach"="red","within_promise"="green","before_promise"="blue")) +
geom_vline(xintercept=c(as.numeric(as.Date('2016-05-14'))),linetype="dotted") + 
  scale_y_continuous(labels=percent) +
  ylim(0, 1)

ggplotly()

但结果与前一个图相同,y轴限制是相同的。 当我没有把y轴放在百分比时它起作用:

p = ggplot(test, aes(x=creation_date, y=value, color=type)) +
  geom_line(aes(group=type)) +
  scale_colour_manual(values=c("breach"="red","within_promise"="green","before_promise"="blue")) +
geom_vline(xintercept=c(as.numeric(as.Date('2016-05-14'))),linetype="dotted") + 
  ylim(0, 1)

ggplotly()

enter image description here

此外,当我将y轴设置为百分比时,使用ggplotly,当我将鼠标放在图形的某个点上时,该值不是百分比:

enter image description here

3 个答案:

答案 0 :(得分:4)

我知道你问过这个问题,但你可以在limits内使用scale_y_continuous(),如下所示:

scale_y_continuous(labels = scales::percent, limits=c(0,1))

答案 1 :(得分:2)

由于你没有给出数据集,我正在做出最好的猜测。

您需要在limits中提供scale_y_continuous选项。如您所见,ylim不会覆盖scale_y_continuous设置的美学。您需要使用一个功能来改变y轴的美感。使用ylimscale_y_continuous

答案 2 :(得分:0)

未成年人建议对以上回复进行修改:

似乎您必须在scale_y_continuous调用之前中指定限制,以将值设置为百分比:

scale_y_continuous(limits=c(0,1), labels = scales::percent)