ggplot2 x轴,每个值R的标签
Posted
技术标签:
【中文标题】ggplot2 x轴,每个值R的标签【英文标题】:ggplot2 x-axis with labels for each value R 【发布时间】:2020-07-08 08:41:36 【问题描述】:我想创建一个在 x 轴上显示 36 个刻度的图形。
我有 df
在这个例子中我需要 12 个刻度来显示文本。
period agg1 agg2
201601 1 2
201602 2 2
201603 3 2
. . .
. . .
. . .
201612 4 1
period
是数字,格式为 YYYYMM,所以我将其更改为日期
for (row in 1:nrow(df))
df[row,'period'] <- df[row,'period'] %>%
mutate(period = as.Date(as.character(period*100+25),"%Y%m%d"))
融化数据
long_df <- melt(df, id = "period")
我使用以下方法绘制数据:
df_plot <- ggplot(data = long_df,
aes(x = period, y = value, colour = variable)) +
geom_line()
# adding titles & labels
df_plot + labs(title = "Aggregates", colour = "Method") +
xlab("Period") +
ylab("Agg, £million") +
scale_x_discrete(breaks = c("201601", "201602", "201603", "201604", "201605", "201606", "201607", "201608", "201609", "201610", "201611", "201612"))
这会创建一个图表,其中刻度线位于正确的位置,但文本不会显示在刻度线处。
我尝试添加 labels = c()
参数,但它没有显示任何内容
df_plot + labs(title = "Aggregates", colour = "Method") +
xlab("Period") +
ylab("Agg") +
scale_x_discrete(breaks = c("201601", "201602", "201603", "201604", "201605", "201606", "201607", "201608", "201609", "201610", "201611", "201612"),
labels = c("201601", "201602", "201603", "201604", "201605", "201606", "201607", "201608", "201609", "201610", "201611", "201612"))
我发现了这个:ggplot x-axis labels with all x-axis values 但根据解决方案,我的labels
参数应该有效吗?
【问题讨论】:
如果你的 x 轴是一个日期,你想使用类似scale_x_date(date_breaks = "1 day", date_labels = "%Y%m")
的东西。请参阅此问题/答案:***.com/questions/60764841/…
@Laura:您不必使用for
循环来更改日期。只需直接在df
上使用mutate
。它适用于所有行
【参考方案1】:
# formatting period to date
library(zoo) # additional library required
df$period <- sapply(df$period,as.character)
#sapply(df$period, class)
for (row in 1:nrow(df))
df$period <- zoo::as.Date(zoo::as.yearmon(df$period, "%Y%m"))
# plot
df_plot <- ggplot(data = long_df,
aes(x = period, y = value, colour = variable)) +
geom_line()
df_plot + labs(title = "Aggregates", colour = "Method") +
xlab("Period") +
ylab("Agg, £million") +
scale_x_date(breaks = "1 month", date_labels = "%Y%m") +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) # to rotate 90 degrees
【讨论】:
以上是关于ggplot2 x轴,每个值R的标签的主要内容,如果未能解决你的问题,请参考以下文章
r 将多个ggplot2图与一个共同的x轴和不同的y轴对齐,每个轴都有不同的y轴标签。
在 R 中使用带有 facet_wrap 的 ggplot2 显示多个轴标签
强制 R 停止绘制缩写轴标签 - 例如ggplot2 中的 1e+00
R语言ggplot2可视化分组点图使用EnvStats包的stat_n_text函数为每个分组添加样本数标签信息(例如,在图像中X轴上方添加n=11)