在ggplot中标记最接近千的x轴

时间:2016-06-24 08:00:54

标签: r ggplot2

我想使用scale_x_continuous并将我的标签四舍五入到最接近的千位。例如,如果我的X轴是1234567,2345566 ....我希望它是1235,2346.我使用了测序来分割我的x轴十分位数。当我将其四舍五入然后潜水1000次时,我将通过示例展示它。它制作了1235000,之后将它变成了我想要的1235但是因为sclae_x_continuous观察到所有数字直到3百万(现在是3k)都是在第一个十分位数时它将所有标签打印在同一个地方。我正在使用的代码是:

ggplot(
  data = cummulative, 
  aes(
    x = seq(1,length(cummulative$Frequency)),
    y = Cum.Percent.,
    group = 1
  )
) + 
geom_line(colour="red", size=1) + 
theme_classic() + 
theme(axis.text.x = element_text(angle = 75, hjust = 1, size=8)) + 
labs(x="Number of Customer (in thousands)",y="Product Share (%)") +
ggtitle("Pareto Chart") +ylim(0,100.1) +
(scale_x_continuous(
  breaks = seq(
    0, 
    length(cummulative$Frequency), 
    length(cummulative$Frequency)/10
  )
))    

请在此处找到图片:enter image description here

非常感谢你们:)

1 个答案:

答案 0 :(得分:2)

ggplot处理中断,而不是手动指定它们。你会得到一个很好的间隔。将X先验除以1000将使您非常接近解决方案。

如果您想要更好的解决方案,请提供可重现的示例。

ggplot(
  data = cummulative, 
  aes(
    x = seq_along(Frequency) / 1000,
    y = Cum.Percent.
  )
) + 
geom_line(colour="red", size=1) + 
theme_classic() + 
theme(axis.text.x = element_text(angle = 75, hjust = 1, size=8)) + 
labs(
  x = "Number of Customer (in thousands)",
  y = "Product Share (%)"
) +
ggtitle("Pareto Chart") +
ylim(0, 100.1) +
scale_x_continuous()