【发布时间】:2020-04-27 17:55:55
【问题描述】:
我正在使用ggplot 创建一个具有区域填充值的多面板图。我想准确地在最大 x 值(年份)处截断图表并仍然标记那一年。当我指定确切的值时,它不会打印最终值(当值 2001、2005 和 2010 由 breaks 设置时的结果显示在左侧)。我还想指定设置了哪些刻度值(默认没有意义,请参见右侧的打印输出示例)并且我已将轴刻度标签设置为包含 x 轴上的最后一个值,但它没有完全打印(它在绘图区域的边缘被切断)。我如何让 ggplot 显示最后一个值,因为我通过中断设置它?下面的代码是此处显示的虚拟示例。
编辑:将代码中的中断更正为 2001、2005、2010(不是 2100)。
set<-data.frame(year=c(2001:2010), values=c(1:10))
g1<-ggplot(set, aes(x=year,y=values))+
geom_area(data=set)+
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black"))+
scale_x_continuous(expand=c(0, 0), breaks=c(2001, 2005, 2010)) + #label at 25-year intervals
scale_y_continuous(expand = c(0, 0))
g2<-ggplot(set, aes(x=year,y=values))+
geom_area(data=set)+
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black"))+
scale_x_continuous(expand=c(0, 0)) + #label at 25-year intervals
scale_y_continuous(expand = c(0, 0))
ggarrange(g1, g2, nrow=1, ncol=2)
【问题讨论】:
-
您是否尝试将
limits = c(2001,2010)添加到 scale_x_continuous?另外,你在 2001 年、2005 年和 2100 年有休息时间——这是故意的吗? -
@Tjebo 添加
limits = c(2001, 2010)给出相同的结果(看不到最后一个值)。是的,我想设置精确的刻度标签,包括第一个和最后一个值以及一个中间值。 -
我的意思是,你试过 2010 而不是 2100
-
是的,你会讨厌看到你在
breaks=参数中打错了字。 :/ 你有 2100 而不是 2010。它工作正常,虽然你得到一些“2010”标签由于情节边距剪裁而被切断。如果你得到这样的剪辑,你可以添加theme(plot.margin = margin(10,15,10,10, "points")来添加一些填充(对我有用)。 -
@Tjebo 好吧,这是一个愚蠢的错字。我将解决最初的问题,使其成为 2010 年!我的实际数据集从 2001 年到 2100 年,但我已将其简化为此处的示例。我曾尝试更改
margin和cm但我的轴仍然不存在所以我不太明白发生了什么但它适用于您建议的值。