R 为什么在ggplot2中运行相同的注释函数对其他人有效,但对我来说会抛出一个错误(美学长度)?
我使用最初有效的ggplot2创建了一个图形。在没有任何改变的情况下,它停止了对我的工作,抛出了一个错误:“美学必须是长度1或与数据(9):标签相同”。然而,我有同事在他们的系统上运行我的代码,它工作得非常好。这是什么原因造成的?我们都安装了几乎相同的版本或R、RStudio、ggplot2和tidyverse 在调用tidyverse库之前和之后,我都尝试过调用ggplot2库,以查看是否版本不匹配。我卸载了所有软件包并重新安装。我卸载了R并重新安装了R。它对我来说从来都不起作用,而且总是对他们起作用 我有ggplot2版本3.2.0,他们有ggplot2版本3.1.1。该网站称,3.2.0版本“修复”了一个问题,该问题可能使3.1.1的同事能够运行代码,即使它不应该运行;这意味着我的代码中有不正确的地方,以前的3.1.1版本可能会意外运行。以下是3.2.0发行版中似乎相关的一行: “在某些情况下,ggplot2现在会为以前生成打印输出的代码生成警告或错误。在所有这些情况下,以前的打印输出都是意外的,并且打印代码使用ggplot2 API的方式会导致未定义的行为。示例包括……跨多个方面的注释(#3305)…) 所以这要么是我的软件或软件包设置有问题,要么是我的代码错误。有什么想法吗 以下是我所称的所有库:R 为什么在ggplot2中运行相同的注释函数对其他人有效,但对我来说会抛出一个错误(美学长度)?,r,ggplot2,version,annotate,R,Ggplot2,Version,Annotate,我使用最初有效的ggplot2创建了一个图形。在没有任何改变的情况下,它停止了对我的工作,抛出了一个错误:“美学必须是长度1或与数据(9):标签相同”。然而,我有同事在他们的系统上运行我的代码,它工作得非常好。这是什么原因造成的?我们都安装了几乎相同的版本或R、RStudio、ggplot2和tidyverse 在调用tidyverse库之前和之后,我都尝试过调用ggplot2库,以查看是否版本不匹配。我卸载了所有软件包并重新安装。我卸载了R并重新安装了R。它对我来说从来都不起作用,而且总是对他
library(tidyverse)
library(lubridate)
library(readxl)
library(reshape2)
library(scales)
library(plotly)
library(extrafont)
这是我运行library(tidyverse)时控制台打印的内容:
这是我正在制作成图表的整个表格:
Component_ProgramItem task ProjectedEndDate_6_30_18 date.type task.date
1 Citywide Programs Original 2019-12-31 end 2012-08-30
2 Neighborhood Parks Original 2016-01-27 end 2013-03-31
3 Waterfront Parks Original 2019-12-31 end 2015-02-28
4 Neighborhood Parks Updated 2016-01-27 end 2016-01-27
5 Citywide Programs Updated 2019-12-31 end 2020-03-31
6 Waterfront Parks Updated 2019-12-31 end 2020-04-30
7 Citywide Programs Original 2019-12-31 start 2008-08-28
8 Neighborhood Parks Original 2016-01-27 start 2008-08-28
9 Waterfront Parks Original 2019-12-31 start 2008-08-28
10 Citywide Programs Updated 2019-12-31 start 2012-08-30
11 Neighborhood Parks Updated 2016-01-27 start 2013-03-31
12 Waterfront Parks Updated 2019-12-31 start 2015-02-28
#6 Create ggplot schedule
#order of "label=c("label name...", Label name 2...", ) is alphabetical
ggplot(csnp2008.sched.long, aes(x=task, y=task.date, colour=task)) +
geom_line(size=70, show.legend = FALSE) +
scale_color_manual(values = c("#fadd9d", "#ffc000")) +
scale_fill_manual(values = c("#fadd9d", "#ffc000")) +
labs(x=NULL, y=NULL) +
scale_y_date(breaks = "1 year", date_minor_breaks = "1 year", date_labels = "%b-%Y") +
#guides(fill=guide_legend(title=NULL, reverse=TRUE)) +
geom_hline(data = csnp2008.sched.long, aes(yintercept=ProjectedEndDate_6_30_18),
color = "#7f7f7f", size = 1, linetype = "dashed") +
annotate("text", x="task", y=as.Date("2008-10-30"),
label=c("Citywide Programs",
"Neighborhood Parks",
"Waterfront Parks"),
size = 3.75, hjust = "left", family = "Segoe UI Semilight") +
#facet_grid(Component~., switch = "y", labeller = labeller(Component = label_wrap_gen(10))) +
facet_grid(Component_ProgramItem~., switch = "y", scales = "free", space = "free") +
theme_gantt() + theme(axis.text.x=element_text(angle=45, hjust=1, size = 9,
family = "Segoe UI Semilight"),
axis.line.x = element_line(color= "#e7e5e6"),
axis.ticks.x = element_line (color = "#7f7f7f"),
axis.title=element_blank(),
axis.text.y = element_blank(),
strip.text = element_blank())+
coord_flip()
下面是我用来将其绘制成图形的代码:
Component_ProgramItem task ProjectedEndDate_6_30_18 date.type task.date
1 Citywide Programs Original 2019-12-31 end 2012-08-30
2 Neighborhood Parks Original 2016-01-27 end 2013-03-31
3 Waterfront Parks Original 2019-12-31 end 2015-02-28
4 Neighborhood Parks Updated 2016-01-27 end 2016-01-27
5 Citywide Programs Updated 2019-12-31 end 2020-03-31
6 Waterfront Parks Updated 2019-12-31 end 2020-04-30
7 Citywide Programs Original 2019-12-31 start 2008-08-28
8 Neighborhood Parks Original 2016-01-27 start 2008-08-28
9 Waterfront Parks Original 2019-12-31 start 2008-08-28
10 Citywide Programs Updated 2019-12-31 start 2012-08-30
11 Neighborhood Parks Updated 2016-01-27 start 2013-03-31
12 Waterfront Parks Updated 2019-12-31 start 2015-02-28
#6 Create ggplot schedule
#order of "label=c("label name...", Label name 2...", ) is alphabetical
ggplot(csnp2008.sched.long, aes(x=task, y=task.date, colour=task)) +
geom_line(size=70, show.legend = FALSE) +
scale_color_manual(values = c("#fadd9d", "#ffc000")) +
scale_fill_manual(values = c("#fadd9d", "#ffc000")) +
labs(x=NULL, y=NULL) +
scale_y_date(breaks = "1 year", date_minor_breaks = "1 year", date_labels = "%b-%Y") +
#guides(fill=guide_legend(title=NULL, reverse=TRUE)) +
geom_hline(data = csnp2008.sched.long, aes(yintercept=ProjectedEndDate_6_30_18),
color = "#7f7f7f", size = 1, linetype = "dashed") +
annotate("text", x="task", y=as.Date("2008-10-30"),
label=c("Citywide Programs",
"Neighborhood Parks",
"Waterfront Parks"),
size = 3.75, hjust = "left", family = "Segoe UI Semilight") +
#facet_grid(Component~., switch = "y", labeller = labeller(Component = label_wrap_gen(10))) +
facet_grid(Component_ProgramItem~., switch = "y", scales = "free", space = "free") +
theme_gantt() + theme(axis.text.x=element_text(angle=45, hjust=1, size = 9,
family = "Segoe UI Semilight"),
axis.line.x = element_line(color= "#e7e5e6"),
axis.ticks.x = element_line (color = "#7f7f7f"),
axis.title=element_blank(),
axis.text.y = element_blank(),
strip.text = element_blank())+
coord_flip()
它不会为我运行这段代码,在注释函数之后抛出错误:“美学必须是长度1或与数据(9):标签相同”。但是,它可以完美地为其他所有人运行,并为他们返回正确的图形,没有错误消息
这是软件问题吗?还是代码问题
另外,我不会附上最终图表的图像,因为我认为这并不相关。但如果你需要,我可以
p.p.S以下是重新创建的代码:
df2注释函数必须提供输入向量(x、y、label),这些向量必须与数据具有相同的长度(即9行)。我认为最好使用geom_文本,将注释放在数据框中
库(tidyverse)
图书馆(lubridate)
图书馆(readxl)
图书馆(E2)
图书馆(比例尺)
图书馆(绘本)
库(外部字体)
csnp2008.sched.long注释函数必须提供输入向量(x、y、label),这些向量必须与数据具有相同的长度(即9行)。我认为最好使用geom_文本,将注释放在数据框中
库(tidyverse)
图书馆(lubridate)
图书馆(readxl)
图书馆(E2)
图书馆(比例尺)
图书馆(绘本)
库(外部字体)
下一个问题的提示:将代码和数据缩进4个空格。保存所有这些br
标记,我编辑它们:)示例数据和代码不匹配。数据中没有变量task
,变量task。日期在代码中是小写。谢谢@neilfws!我不知道怎么做。情况有了很大改善。另外,我重新命名了数据中的列。。。我认为速记应该是用户友好的,因为代码不是问题所在(也许),但我现在明白了,这是令人困惑的。还有什么我可以改进的吗?@neilfws如果有帮助的话,我也会将数据变为真实的,尽管最后一列的对齐方式不太正确。也许,首先修复这个问题,2012-02-31
?下一个问题的提示:将代码和数据缩进4个空格。保存所有这些br
标记,我编辑它们:)示例数据和代码不匹配。数据中没有变量task
,变量task。日期在代码中是小写。谢谢@neilfws!我不知道怎么做。情况有了很大改善。另外,我重新命名了数据中的列。。。我认为速记应该是用户友好的,因为代码不是问题所在(也许),但我现在明白了,这是令人困惑的。还有什么我可以改进的吗?@neilfws如果有帮助的话,我也会让数据真实化,尽管最后一列的对齐方式不太正确。也许,先修复这个,2012-02-31
?非常感谢!这就解决了!非常感谢,非常感谢!这就解决了!非常非常感谢。