ggplot,设置x轴刻度的最大数量

时间:2018-07-16 12:44:03

标签: r ggplot2 axis-labels

希望是一件小事。希望下面的代码非常简单,仅用于说明问题(因此非常粗糙)。我只是想知道设置x轴刻度的最大数量的最佳方法是什么。

library(ggplot2)
library(data.table)

data <- data.table(year=c(2009,2009,2009,2009,2010,2010,2010,2010,
2011,2011,2011,2011,2012,2012,2012,2012,2013,2013,2013,2013,
2014,2014,2014,2014,2015,2015,2015,2015),year_quart = c("2009-Q1","2009-Q2",
"2009-Q3","2009-Q4","2010-Q1","2010-Q2","2010-Q3","2010-Q4","2011-Q1","2011- 
Q2","2011-Q3","2011-Q4","2012-Q1","2012-Q2","2012-Q3","2012-Q4",
"2013-Q1","2013-Q2","2013-Q3","2013-Q4","2014-Q1","2014-Q2","2014-Q3",
"2014-Q4","2015-Q1","2015-Q2","2015-Q3","2015-Q4"),region = c("EU","EU",
"EU","EU","EU","EU","EU","EU","EU","EU","EU","EU","EU","EU","EU","EU","EU",
"EU","EU","EU","EU","EU","EU","EU","EU","EU","EU","EU"),value = c(390,621,
442,113,586,571,391,432,758,897,696,160,189,567,621,922,402,185,609,812,549,
783,211,974,723,584,745,609))

plot1 <- ggplot(data, aes(factor(year_quart),value, xmin="2009-Q1", xmax="2009-Q4")) + 
  geom_line(aes(group=region),size=0.4) + 
  labs(x = "year", y = "value", title = "Title") + 
  scale_x_discrete(
    breaks = unique(data$year_quart),
    labels = unique(data$year_quart),
    limits = c("2009-Q1","2009-Q2","2009-Q3","2009-Q4","2010-Q1","2010-Q2")
  )

因此,通过此代码,我得到了一个看起来还不错的图。但是,如果我交换

limits=c("2009-Q1","2009-Q2","2009-Q3","2009-Q4","2010-Q1","2010-Q2")

limits=c("2009-Q1","2009-Q2","2009-Q3","2009-Q4","2010-Q1","2010-Q2","2010-Q3", "2010-Q4","2011-Q1","2011-Q2","2011-Q3","2011-Q4","2012-Q1","2012-Q2","2012-Q3",
"2012-Q4","2013-Q1","2013-Q2","2013-Q3","2013-Q4","2014-Q1","2014-Q2","2014-Q3",
"2014-Q4","2015-Q1","2015-Q2","2015-Q3","2015-Q4"))

我产生了太多的刻度线,无法清晰查看。因此,我理想地希望在一个特定的年份/季度范围内,根据此范围生成特定数量的代码,这些代码可以生成最大数量的(清晰可见的)刻度。

非常感谢!

1 个答案:

答案 0 :(得分:0)

如果我们的目标是使刻度线标签更具可读性,则可以随时使用axis.text.x中的theme参数来旋转刻度线标签:

ggplot(data, aes(factor(year_quart),value, xmin="2009-Q1", xmax="2009-Q4")) + 
  geom_line(aes(group=region),size=0.4) + 
  labs(x = "year", y = "value", title = "Title") + 
  scale_x_discrete(
    breaks = unique(data$year_quart),
    labels = unique(data$year_quart),
    limits=c("2009-Q1","2009-Q2","2009-Q3","2009-Q4","2010-Q1","2010-Q2","2010-Q3", "2010-Q4","2011-Q1","2011-Q2","2011-Q3","2011-Q4","2012-Q1","2012-Q2","2012-Q3",
             "2012-Q4","2013-Q1","2013-Q2","2013-Q3","2013-Q4","2014-Q1","2014-Q2","2014-Q3",
             "2014-Q4","2015-Q1","2015-Q2","2015-Q3","2015-Q4")
  ) +
  theme(axis.text.x = element_text(angle = 45))

enter image description here