将图例添加到组合的线图和条形图ggplot中

问题描述

所以我知道很多人都问过类似的问题,但是其他人使用的代码似乎不适用于我的图表,因此为什么我想知道自己做错了什么。

我有此代码:

ggplot(dfMonth) 
+ geom_col(aes(x=Month,y=NumberMO),size=.7,colour="black",fill="white") 
+ geom_line(aes(x=Month,y=NumberME),size=1,group=1)  
+ xlab("Month") 
+ ylab("No. of birds observed") 
+ theme_bw() 
+ geom_point(x=Month,y=NumberME) 
+ scale_colour_manual("",values =c("NumberME"="black"),labels=c("Expected No. of birds")) 
+ theme(legend.key=element_blank(),legend.title=element_blank(),legend.box="horizontal") 
+ theme(axis.title.x = element_text(margin = unit(c(5,0),"mm")),axis.title.y = element_text(margin = unit(c(0,3,"mm"))) 

产生这张图的人:

produced graph

如您所见,即使输入了代码,用于显示带点黑线含义的图例也未添加到我的图形中。没有错误出现,所以为什么我迷失了什么。关于我未能包括在内的任何想法吗?

谢谢

解决方法

为了使ggplot知道绘制图例,您需要在aes()中包括一种几何图形的美学。在这种情况下,如果要为线条绘制图例,则需要在aes()调用的geom_line()中包括为线条标识的美学之一:{{1 }}或linetype起作用。我们将在这里使用颜色。

哦...并且在没有OP共享其数据集的情况下,这是一个虚构的示例:

color

现在使用代码进行绘图并确保已创建图例。

set.seed(1234)
dfMonth <- data.frame(
  Month=month.name,NumberMO=sample(50:380,12),NumberME=sample(50:380,12)
)

enter image description here

我们有一个传说,但是有一些问题。您将获得图例的默认标题(即美学名称)和默认标签(即您在p <- ggplot(dfMonth,aes(x=Month)) + geom_col(aes(y=NumberMO),size=0.7,color="black",fill="white") + geom_line(aes(y=NumberME,color='black'),size=1,group=1) p 中放置的任何文本。由于我们将aes(color=...作为此处的值,因此该行的实际颜色默认为"black"使用的标准颜色集的第一级,在这种情况下为浅色,而不是实际颜色。红色。

要设置颜色,图例名称和标签名称,我们应该指定值。图例中只有一个项目,因此无需指定,但是如果您要发送一个命名矢量来显式地表示我们单行的名称,则最终会得到看上去有些奇怪的ggplot2。我还在标签名称中添加了换行符,以使外观更好看。另外,这几个月彼此相遇,所以我也改变了x轴标签的角度。

最后,您可能会注意到几个月的故障。这是因为默认的c('black'='black')行为是分解一列离散值,该离散值对级别使用字母顺序。要解决此问题,请在使用正确的水平进行绘制之前将列指定为因子。

ggplot2

enter image description here

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...