gpt4 book ai didi

r - 垂直对齐 geom_label 元素

转载 作者:行者123 更新时间:2023-12-04 10:48:11 26 4
gpt4 key购买 nike

问题

我试图在不明显延伸 x 轴的情况下垂直对齐折线图上的 geom_label。有没有一种方法可以在图表右侧留出空白,以便 ggrepel 函数(下方)有工作空间?

我正在尝试复制 this 上的最后一张图表Karam Belkar 的帖子(请参阅帖子底部的代码)除了没有 facet_wrap 并使用 ggplot 中的 economic 示例数据集。

当我使用 expand_limits 时得到错误信息:

Error: Invalid input: date_trans works with objects of class Date only

但是economics$date是Date格式的!

那里不安静的代码:

library("tidyverse")
library("ggthemes")
library("ggrepel")

df1 <- gather(economics, variable_name, observation, -date) %>%
rename(period = date) %>%
filter(variable_name %in% c("pce", "unemploy"))

p <- ggplot(df1, aes(x = period, y = observation, colour = variable_name)) +
geom_line() +
coord_cartesian(xlim = c(min(df1$period), max(df1$period))) +
#Alternative line to that above with undesirable result
#coord_cartesian(xlim = c(min(df1$period), max(df1$period) **+ 3000**)) +
geom_text_repel(
data = subset(df1, period == max(period)),
aes(label = variable_name),
size = 3,
nudge_x = 45,
segment.color = 'grey80'
) +
scale_y_continuous(labels = scales::comma) +
theme_minimal(base_size = 16) +
scale_color_tableau() +
scale_fill_tableau() +
theme(legend.position = 'none') +
labs(x="", y="", title = "Economic Data")


p + expand_limits(x = 700)
#the data set has 574 observations so I tried to
#add another 126 to give space to the labels

ggrepel Usage Examples page在“线图”标题下有一些基于橙树生长数据的示例。这涉及在 coord_cartesian 函数中添加一个 x 值以增加 x 轴。这为我需要的标签行为提供了空间,但这意味着 x 轴延伸到 2020 年之后,图表的该部分上方没有数据,这是不可取的。

最佳答案

有必要以日期格式提供轴限制,使用 expand_limits(x=700) 将其关闭,下面的工作将其合并到 scale_x_date 中。我使用 1200 而不是 700 来创建附加图表。

p <- ggplot(df1, aes(x = period, y = observation, colour = variable_name)) +
geom_line() +
geom_text_repel(
data = subset(df1, period == max(as.Date(period, "%Y-%m-%d"))),
aes(label = variable_name),
size = 3,
nudge_x = 45,
segment.color = 'grey80'
) +
scale_y_continuous(labels = scales::comma) +
theme_minimal(base_size = 16) +
scale_color_tableau() +
scale_fill_tableau() +
theme(legend.position = 'none') +
labs(x="", y="", title = "Economic Data")
p + scale_x_date(limits = c(min(df1$period), max(df1$period) + 1200))

enter image description here

关于r - 垂直对齐 geom_label 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49607324/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com