带有灰色和黑色虚线的线图
Posted
技术标签:
【中文标题】带有灰色和黑色虚线的线图【英文标题】:Line plot with gray and black dotted lines 【发布时间】:2016-03-05 10:20:57 【问题描述】:使用 ggplot2 R 包,我制作了一个带有 6 条彩色线(指因子的 6 个级别)的线图,我想将其更改为黑白,制作 3 条黑色实线、虚线和虚线加上 3灰色实线、虚线和虚线。 我尝试使用 scale_linetype_manual() 和 scale_color_grey() 但我无法混合灰色和黑色虚线。
这里是刻度灰度选项的代码:
ggplot() +
geom_line(data = f[!is.na(f$fr),], aes(x=date2, y=fr, colour=locality, group=locality),
size = 1.0) +
scale_color_grey(start = 0, end = 0.9, guide="legend", name="Locality",
labels=c("a","b","c","d","e","f")) +
xlab("") +
ylab("") +
theme_bw() +
theme(legend.position = "top", panel.background = element_rect(fill = "white"),
panel.grid.major = element_line(colour = "white"),
axis.text.x=element_text(angle=90,hjust=1,vjust=0.5)) +
facet_grid(.~year)
虽然这是带有虚线的代码:
ggplot() +
geom_line(data = f[!is.na(f$fr),], aes(x=date2, y=fr, linetype=locality, group=locality),
size = 1.0) +
scale_linetype_manual(name="Locality",
values=c("solid", "dashed", "dotted", "dotdash", "longdash", "twodash"),
labels=c("a","b","c","d","e","f")) +
xlab("") +
ylab("") +
theme_bw()+
theme(legend.position = "top", panel.background = element_rect(fill = "white"),
panel.grid.major = element_line(colour = "white"),
axis.text.x=element_text(angle=90,hjust=1,vjust=0.5)) +
facet_grid(.~year)
所以.. 有人可以帮我用一条黑色实线、一条黑色虚线、一条黑色虚线、一条灰色实线等创建相同的图吗?
【问题讨论】:
只需将 scale_colour_manual() 添加到您的绘图中 谢谢。我尝试在最后一个代码中添加它,但它不起作用......这是输出: scale$palette(n) 中的错误:缺少参数“values”,没有默认值 你试过 scale_colour_manual(values=c("black", "grey", "black", "grey", "black", "grey")) 是的,我也尝试“grey50”,“grey”80”,......但仍然不起作用。我认为可以将每条线与其颜色连接在相同的“ scale_linetype_manual()" 命令,但我不知道如何...谢谢 另见此处:***.com/questions/11344561/… 【参考方案1】:正如 MLavoie 所说,我认为您应该尝试创建显式向量。我无法尝试,但也许这样的事情应该可行:
vectCol=c("a"="black", "b"="black", "c"="black", "d"="grey","e"="grey", "f"="grey")
vectTyp=c("a"="solid", "b"="dashed", "c"="dotted", "d"="solid","e"="dashed", "f"="dotted")
然后,您在 ggplot 中添加“线型”作为参数,并使用 scale_manual 设置颜色和线型
ggplot(data = f[!is.na(f$fr),], aes(x=date2, y=fr, colour=locality,group=locality, linetype=locality)) +
geom_line(size = 1.0) +
scale_color_manual(values=vectCol, guide="legend", name="Locality", labels=c("a","b","c","d","e","f"))+
scale_linetype_manual(values=vectTyp, guide="legend", name="Locality", labels=c("a","b","c","d","e","f"))+
xlab("") + ylab("") + theme_bw() +
theme(legend.position = "top", panel.background = element_rect(fill ="white"), panel.grid.major = element_line(colour = "white"),
axis.text.x=element_text(angle=90,hjust=1,vjust=0.5)) + facet_grid(.~year)
【讨论】:
谢谢!我试试这个,但现在的错误是:grid.Call.graphics 中的错误(L_lines, x$x, x$y, index, x$arrow) : invalid line type 好吧,我的错。如果您尝试使用 vectTyp=c("a"=1, "b"=2, "c"=3, "d"=1,"e"=2, "f"=3)? 它返回相同的错误...:grid.Call.graphics中的错误(L_lines,x$x,x$y,index,x$arrow):无效的线型 在您的数据集 f 中,位置级别是否称为“a”、“b”、“c”等?否则,您应该用正确的级别替换 vectCol 和 vectTyp 中的 a、b、c、d、e、f。例如,如果您的地区是“伦敦”、“纽约”等,请编写 vectTyp=c("London"=1, "NewYork"=2, etc...) 是的,这正是我认为的问题!现在它工作了。我对图例名称和真实水平因素的名称有误。非常感谢。【参考方案2】:映射到colour
和linetype
,并设置手动比例。
d <- data.frame(locality = rep(letters[1:6], each = 2),
x = 1:2,
y = rep(1:6, each = 2))
ggplot(d, aes(x = x, y = y,colour = locality, linetype = locality)) +
geom_line() +
theme_bw() +
scale_color_manual(name = "Locality",
values = c('black', 'black', 'black', 'grey', 'grey', 'grey'),
labels = c("a","b","c","d","e","f")) +
scale_linetype_manual(name = "Locality",
values = c("solid", "dashed", "dotted", "solid", "dashed", "dotted"),
labels = c("a","b","c","d","e","f"))
【讨论】:
谢谢!我试试这个,错误是:错误:使用 guide="none" 来抑制指南显示。 (已失效;最后在 0.8.9 版中使用)。比我尝试将 guide="legend" 放在 scale_color_manual() 中而不是 scale_linetype_manual() 但它返回相同的错误...谢谢 这不是来自我的代码。如果您不制作可重现的示例,这就是问题所在。 抱歉,我是新手,不太了解该网站。我更改了数据和图例并尝试了更多次,现在它可以工作了!非常感谢以上是关于带有灰色和黑色虚线的线图的主要内容,如果未能解决你的问题,请参考以下文章