带有灰色和黑色虚线的线图

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】:

映射到colourlinetype,并设置手动比例。

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() 但它返回相同的错误...谢谢 这不是来自我的代码。如果您不制作可重现的示例,这就是问题所在。 抱歉,我是新手,不太了解该网站。我更改了数据和图例并尝试了更多次,现在它可以工作了!非常感谢

以上是关于带有灰色和黑色虚线的线图的主要内容,如果未能解决你的问题,请参考以下文章

适合打印的 Matplotlib 色标

如何用黑色填充灰色空间? SwiftUI

为啥我的引导 btn 反转按钮显示为灰色而不是黑色渐变?

Ghostscript tiffg3 灰色=黑色

如何在 ggplot 等值线图中将 NA 颜色从灰色更改为白色?

在另一个视图下动画 UIView