【问题标题】:How to control number of minor grid lines in ggplot2?如何控制 ggplot2 中次要网格线的数量?
【发布时间】:2012-09-29 09:40:51
【问题描述】:

默认情况下,ggplot2 使用的小网格似乎只是主网格的一半。有什么办法可以破解吗?

例如,我有一个图,其中 x 轴是年,主要中断是 (1850, 1900, 1950, 2000)。这意味着次要网格点位于 (1875, 1925, 1975),这多年来有点不直观。如何让小网格每隔十年出现一次?

【问题讨论】:

  • 您可以使用(在最新版本的 ggplot2 中)theme(panel.grid.major.x = element_blank(), panel.grid.minor.x = element_blank()) 消除网格线,并根据需要添加它们:geom_vline
  • 由于您没有提供任何示例数据,我使用默认的ggplot 数据集进行了演示。
  • @TylerRinker:不寻求消除。还有其他问题。
  • 您要求“任何方式”,这是实现此目的的“方式”。

标签: r ggplot2


【解决方案1】:

您可以通过在 scale_x_continuous 中明确指定 minor_breaks() 来实现。请注意,由于我在下面的简单示例中没有指定panel.grid.major,因此下面的两个图没有这些(但如果需要,您应该添加它们)。要解决您的问题,您应该将年份指定为序列或仅指定年份的向量作为 minor_breaks() 的参数。

例如

 ggplot(movies, aes(x=rating)) + geom_histogram() + 
 theme(panel.grid.minor = element_line(colour="blue", size=0.5)) + 
 scale_x_continuous(minor_breaks = seq(1, 10, 1))

 ggplot(movies, aes(x=rating)) + geom_histogram() + 
 theme(panel.grid.minor = element_line(colour="blue", size=0.5)) + 
 scale_x_continuous(minor_breaks = seq(1, 10, 0.5))

【讨论】:

  • 对于日期对象,这似乎可行:scale_x_date(labels = date_format("%Y"), breaks = seq(as.Date("1990-01-01"), as.Date("2016-01-01"), by = "5 years"), minor_breaks = "1 year") minor_breaks 对我不起作用,当我在庄园中的 seq 命令中设置开始和结束日期时为 breaks 所做的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-09
  • 2011-02-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多