Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 从不同图形的列表中获取名称和值_R_Ggplot2_Tidyverse_Tidyr - Fatal编程技术网

R 从不同图形的列表中获取名称和值

R 从不同图形的列表中获取名称和值,r,ggplot2,tidyverse,tidyr,R,Ggplot2,Tidyverse,Tidyr,我有一个数据集和列表,我一直在工作。我一直在尝试为列表中的每个ID创建一个单独的图表l。我想在A的图形中打印A=1,在B的图形中打印B=2,等等。在我的实际数据集中,ID在整个列表中重复不同的值,理想情况下,我希望从与ID相关联的图表上打印一个ID的所有值 这是我以前尝试过的,但是当我尝试查看绘图时,我得到了错误 Error: Aesthetics must be either length 1 or the same as the data (200): label 库(lubridate)

我有一个数据集和列表,我一直在工作。我一直在尝试为列表中的每个
ID
创建一个单独的图表
l
。我想在
A
的图形中打印
A=1
,在
B
的图形中打印
B=2
,等等。在我的实际数据集中,
ID
在整个列表中重复不同的值,理想情况下,我希望从与
ID
相关联的图表上打印一个
ID
的所有值

这是我以前尝试过的,但是当我尝试查看绘图时,我得到了错误

Error: Aesthetics must be either length 1 or the same as the data (200): label
库(lubridate)
图书馆(tidyverse)

日期根据可复制的示例,您可以这样做:

library(purrr)
library(ggplot2)

p.list <- imap(split(df, ID), ~ 
                 ggplot(.x, aes(x = date, y = NSD)) + 
                 geom_line() +
                 theme_bw() + 
                 theme(axis.text.x = element_text(angle = 90)) +
                 scale_x_datetime(date_breaks = '2 months', date_labels = '%y%j') +
                 geom_text(data = subset(id_labels, ID == .y), aes(label = label,
                                               x = as.POSIXct(-Inf, '1970-01-01'),
                                               y = max(.x$NSD),
                                               hjust = 0, 
                                               vjust = 0))
                 )

您是否试图通过
ID
创建
facet\u网格
,或将每个
ID
的单个绘图存储在列表中?您发布的示例有几个错误。尝试在新会话中运行代码,并编辑问题以调试示例。除了使用
ggplot
获得的错误消息外,现在应该可以修复该问题。我试图在列表中为每个ID存储一个绘图。我有另一个列表
l
,其中包含
ID
和值,我想根据这些值分配给的
ID
打印列表
l
中的值。在我的实际数据集中,
ID
在列表中重复多次,并且具有相同的
ID
的不同值。
library(purrr)
library(ggplot2)

p.list <- imap(split(df, ID), ~ 
                 ggplot(.x, aes(x = date, y = NSD)) + 
                 geom_line() +
                 theme_bw() + 
                 theme(axis.text.x = element_text(angle = 90)) +
                 scale_x_datetime(date_breaks = '2 months', date_labels = '%y%j') +
                 geom_text(data = subset(id_labels, ID == .y), aes(label = label,
                                               x = as.POSIXct(-Inf, '1970-01-01'),
                                               y = max(.x$NSD),
                                               hjust = 0, 
                                               vjust = 0))
                 )
p.list$A