【问题标题】:Adding data labels to points in ggplot: label argument not working将数据标签添加到 ggplot 中的点:标签参数不起作用
【发布时间】:2023-03-16 05:51:01
【问题描述】:

我知道这个问题已经回答过几次herehere。关键点似乎是在aes 中包含参数label。但是,对我来说,ggplot 不接受label 作为aes 中的参数。我尝试在 aes 中使用通用函数labels,如下所示,但这无法为点创建标签,尽管我能够生成图表:

  launch_curve <- ggplot(data = saltsnck_2002_plot_t,aes(x=weeks,y=markets, labels(c(1,2,3,4,5,6,7,8,9,10,11,12))))+
    geom_line()+geom_point()+
    scale_x_continuous(breaks = seq(0,12,by=1))+
    scale_y_continuous(limits=c(0,50), breaks = seq(0,50,by=5))+
    xlab("Weeks since launch")+ ylab("No. of markets")+
    ggtitle(paste0(marker1,marker2))+
    theme(plot.title = element_text(size = 10))
  print(launch_curve)

有人知道解决这个问题的方法吗?我正在使用 R 版本 3.4.3。

已编辑以包含示例数据: 我用来绘制的数据在数据框saltsnck_2002_plot_t 中。 (12 行乘 94 列)。示例如下:

>saltsnck_2002_plot_t

       11410008398 11600028960 11819570760 11819570761 12325461033 12325461035 12325461037
Week1            3           2           2           1           2           2           1
Week2            6          16          10           1           3           2           2
Week3           11          41          13          10           3           3           2
Week4           15          46          14          14           3           4           4
Week5           15          48          15          14           3           4           4
Week6           27          48          15          15           3           4           4
Week7           31          50          15          15           3           4           5
Week8           33          50          16          16           5           5           6
Week9           34          50          18          16           5           5           6
Week10          34          50          21          19           5           5           6
Week11          34          50          23          21           5           5           6
Week12          34          50          24          23           5           5           6

我实际上是通过移动数据框的列来循环绘制图形。这个数据框是转置操作的结果,因此奇怪的行和列名。第一列的图表如下图所示。并且对我之前的帖子进行了更正,我需要将列中的值而不是 c(1,2,3,4,5,6,7,8,9,10,11,12) 捕获为数据标签。

【问题讨论】:

  • 您确定labels(c(1,2,3,4,5,6,7,8,9,10,11,12)) 的语法正确吗? dput 对可重复数据也会有所帮助。
  • 关键是使用geom_text,就像您链接的答案一样。请包含来自saltsnck_2002_plot_t 的一些数据,以使您的问题可重现。

标签: r ggplot2


【解决方案1】:

使用geom_text

library(ggplot2)  
ggplot(data = df,aes(x=weeks_num,y=markets))+
 geom_line() + geom_point() + geom_text(aes(label = weeks), hjust = 0.5,  vjust = -1) +
 scale_y_continuous(limits=c(0,50), breaks = seq(0,50,by=5)) +
 scale_x_continuous(breaks = seq(1,12,by=1),labels = weeks_num)+
 xlab("Weeks since launch")+ ylab("No. of markets")+
 ggtitle(paste0(markets))+
 theme(plot.title = element_text(size = 10))

数据

df <- structure(list(weeks_num = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 
12), weeks = structure(1:12, .Label = c("week1", "week2", "week3", 
"week4", "week5", "week6", "week7", "week8", "week9", "week10", 
"week11", "week12"), class = c("ordered", "factor")), markets = c(3, 
 6, 11, 15, 27, 31, 33, 34, 34, 34, 34, 34)), .Names = c("weeks_num", 
"weeks", "markets"), row.names = c(NA, -12L), class = "data.frame")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 2022-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多