所以我知道很多人都问过类似的问题,但是其他人使用的代码似乎不适用于我的图表,因此为什么我想知道自己做错了什么。
我有此代码:
ggplot(dfMonth)
+ geom_col(aes(x=Month, y=NumberMO), size=.7, colour="black", fill="white")
+ geom_line(aes(x=Month, y=NumberME), size=1, colour="black", 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, 0, 0), "mm")),
axis.title.y = element_text(margin = unit(c(0,3 , 0, 0), "mm")))
产生这张图的人:
如您所见,即使输入了代码,用于显示带点黑线含义的图例也未添加到我的图形中。没有错误出现,所以为什么我迷失了什么。关于我未能包括在内的任何想法吗?
谢谢
答案 0 :(得分:1)
为了使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)
)
我们有一个传说,但是有一些问题。您将获得图例的默认标题(即美学名称)和默认标签(即您在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