R ggplot2:lines+;在绘图和图例中使用白色填充的点?

R ggplot2:lines+;在绘图和图例中使用白色填充的点?,r,ggplot2,plot,fill,points,R,Ggplot2,Plot,Fill,Points,我想用ggplot2软件包创建一个绘图,该软件包结合了线和点。根据组指示器,点应具有颜色和形状。应创建图例,根据绘图显示颜色和形状 这部分很好。但是,所有点都应该有白色填充,我找不到正确的代码 谷歌搜索建议使用fill=“white”,但这不起作用 考虑以下示例数据和绘图: library("ggplot2") # Example data df <- data.frame(y = 1:100, x = 1:100, g

我想用ggplot2软件包创建一个绘图,该软件包结合了线和点。根据组指示器,点应具有颜色和形状。应创建图例,根据绘图显示颜色和形状

这部分很好。但是,所有点都应该有白色填充,我找不到正确的代码

谷歌搜索建议使用
fill=“white”
,但这不起作用

考虑以下示例数据和绘图:

library("ggplot2")

# Example data
df <- data.frame(y = 1:100,
                 x = 1:100,
                 group = as.factor(c(rep(1, 33), rep(2, 33), rep(3, 34))))

# Create plot --> fill = "white" doesnt work
ggplot(df, aes(x = x, y = y)) + 
  geom_line(aes(colour = factor(group, labels = c("a", "b", "c")))) +
  geom_point(aes(colour = factor(group, labels = c("a", "b", "c")),
                 shape = factor(group, labels = c("a", "b", "c"))),
             fill = "white") +              ##### This line is not working #####
  theme(legend.title = element_blank())
库(“ggplot2”)
#示例数据
df fill=“白色”不起作用
ggplot(df,aes(x=x,y=y))+
几何线(aes(颜色=因子(组,标签=c(“a”、“b”、“c”)))+
几何点(aes(颜色=因子(组,标签=c(“a”、“b”、“c”))),
形状=系数(组,标签=c(“a”、“b”、“c”)),
fill=“white”)+#####此线路不工作#####
主题(legend.title=element\u blank())


问题:如何用白色填充此绘图的点(在绘图和图例中)?

您可以使用
scale\u shape\u discrete
设置
solid=FALSE

ggplot(df, aes(x = x, y = y)) + 
  geom_line(aes(colour = factor(group, labels = c("a", "b", "c")))) +
  scale_shape_discrete(solid = F) +
  geom_point(aes(colour = factor(group, labels = c("a", "b", "c")),
                 shape = factor(group, labels = c("a", "b", "c")))) +              
theme(legend.title = element_blank())

ggplot2使用的默认形状只有一种颜色:以获得两种颜色 颜色和填充,您必须使用21到25的点形状。然后设置
fill=“white”
将起作用:

库(ggplot2)

df如果您不使用标准形状21:25,请提出解决方案。诀窍是调用geom_点两次,一次调用shape21清理重叠线,另一次调用覆盖所需形状

library(ggplot2)
library(RColorBrewer)
Paired = brewer.pal(n=10, name="Paired")
unicodeShapes = -10122:-10131

df = data.frame(y = 1:10, x = 1:10, labels = LETTERS[1:10])

ggplot(data=df,aes(x=x, y=y)) +
  geom_line(color="gray50") + 
  geom_point(aes(x=x, y=y), color="white", shape=21, fill="white", size=5.0,show.legend=FALSE) + 
  geom_point(aes(color=labels, shape=labels), size=6.5) + 
  scale_shape_manual(name="Labels",values=unicodeShapes) +
  scale_color_manual(name="Labels",values=Paired) +
  theme_classic()+
  theme(axis.line.x=element_line(color="gray20", size=1.0),
        axis.line.y=element_line(color="gray20", size=0.5),
        panel.grid.major.x=element_blank(),
        panel.grid.minor=element_blank(), 
        panel.border=element_rect(colour="gray50",fill=NA,size=1.0),
        panel.background = element_rect(colour = "gray50", size=1.0),
        legend.position="bottom",
        text=element_text(size=18))

这不会设置填充:而是将其删除。您的答案不会使用具有两种颜色(边框和填充)的点形状21到25。这是正确的,但仅当您希望用不同于白色的颜色填充点时才相关。我不知道这是如何证明投反对票的,但我是我的客人。没有填充和有白色填充不是一回事。作为一个有趣的例子,尝试交换
geom_点
geom_线
的顺序。现在,这条线被画在点的顶部!@Mikko Marttila感谢您提供的附加解决方案和解释!@谢谢你的提示!感谢您提供这个有趣的带标签的解决方案。