【问题标题】:Reduce space between ticks in ggplot2减少ggplot2中刻度之间的空间
【发布时间】:2016-05-21 19:27:29
【问题描述】:

我制作了几个随机游走的时间序列图,现在我了解如何提取其中的某个部分以及如何将刻度从几年更改为几个月。但即使经过长时间的测试,我也不知道如何正确操作图表中的 x 轴。

现在,它显示了 50 年步长,并且每隔一个白色垂直网格线被标记(为什么?在每个教程中,我看到所有线都被标记)。我想要实现的是更改缩放比例,因此水平使用的空间更少(即减少x轴上所有刻度之间的空间),所以第一个刻度将是2000,第二个(不是第三个)目前的情况)在 2050 年,依此类推。我认为这应该可以通过breaks 以某种方式实现,但我无法弄清楚。最后,左右两边的剧情开始和结束都太早了,但我相信我能处理好。

剧情如下:

set.seed(21)

n <- 2500
x <- matrix(replicate(20,cumsum(sample(c(-1, 1), n, TRUE))),nrow = 2500,ncol=20)

aa <- x

rnames <- seq(as.Date("2010-01-01"), length=dim(aa)[1], by="1 month") - 1
rownames(aa) <- format(as.POSIXlt(rnames, format = "%Y-%m-%d"), format = "%d.%m.%Y")
colnames(aa) <- paste0("aa",1:k)

library("ggplot2")
library("reshape2")
library("scales")

aa <- melt(aa, id.vars = rownames(aa))
names(aa) <- c("time","id","value")

aa$time <- as.Date(aa$time, "%d.%m.%Y")

ggplot(aa, aes(x=time,y=value,colour=id,group=id)) + 
  geom_line()  

【问题讨论】:

  • 默认情况下,ggplot会在每条主网格线之间添加一条次网格线(即没有刻度线的网格线到刻度标签)。要仅包括主要网格线,请添加 scale_x_date(minor_breaks=NULL)。 (如果您在观看的教程视频中没有看到较小的网格线,我猜它们在那里,但由于分辨率不足和/或视频图像尺寸小而难以或不可能看到。)跨度>
  • @eipi10 我明白了,谢谢。然而,主要问题仍然是空间。
  • 你所说的“空格”是什么意思。刻度线之间的物理距离,或刻度线之间的年数?
  • 标记之间的物理距离

标签: r ggplot2


【解决方案1】:

默认情况下,ggplot 在每条主网格线之间添加一条次网格线(即没有刻度线或刻度标签的网格线)。要仅包括主要网格线,请添加 scale_x_date(minor_breaks=NULL)。 (如果您在观看的教程视频中没有看到小网格线,我猜它们在那里,但由于分辨率不足和/或视频图像尺寸小而难以或不可能看到。)

要减少刻度线之间的物理距离,您需要更改绘图的纵横比。例如,如果您希望绘图的垂直范围为 3",那么您需要缩小水平范围,直到刻度线之间的距离足够小。首先,让我们创建一个绘图:

ggplot(aa, aes(x=time,y=value,colour=id,group=id)) + 
  geom_line(show.legend=FALSE) +
  scale_x_date(minor_breaks=NULL) 

这里有两个渲染情节的例子:

更新:回答评论:对于上面的图,我使用grid.arrange 创建图布局,然后从 RStudio 绘图窗口将其保存为 png。我使用widths 参数使一个图比另一个更薄。

library(gridExtra)
grid.arrange(p1, p1, widths=c(0.6,0.4), ncol=2)

但是,您可以通过多种不同的方式精确调整大小,具体取决于您想要的格式。例如:

# PNG format
png("wide.png", 500,500)
p1
dev.off()

png("narrow.png", 300,500)
p1
dev.off()

# PDF format
pdf("wide.pdf", 5, 5)
p1
dev.off()

pdf("narrow.pdf", 3, 5)
p1
dev.off()

【讨论】:

  • 好的,我知道我可以用我的鼠标(不精确)做到这一点,但是你是如何使用命令生成第二个图(右图)的,即指定大小的?
  • 谢谢。我还找到了ggsave,在那里你有更多的选择,比如 dpi。太好了!
猜你喜欢
  • 2017-12-05
  • 1970-01-01
  • 1970-01-01
  • 2017-08-23
  • 2019-02-22
  • 1970-01-01
  • 2019-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多