当我使用ggplot2和geom_col()
或geom_bar(stat = 'identity')
从R保存一个图形时,它会出现一些难看的水平白线。
数据如下所示:
> head(mouse_track_data)
session site BM.pile ox.pile type mice skinks geckos
1 dec_2018 1 1 1.10 control FALSE TRUE FALSE
2 dec_2018 1 2 1.12 design1 FALSE FALSE FALSE
3 dec_2018 1 3 1.11 control FALSE FALSE FALSE
4 dec_2018 1 4 1.80 control FALSE FALSE FALSE
5 dec_2018 1 5 1.60 design1 FALSE FALSE FALSE
6 dec_2018 1 6 1.50 control FALSE FALSE FALSE
下面是我的代码:
ggplot(data = mouse_track_data, aes(x = session, y = as.numeric(mice), fill = type)) +
geom_bar(stat='identity') +
theme_classic() +
theme(text = element_text(size=15),
axis.text.x = element_text(angle = 45, hjust = 1)) +
xlab("Tracking session") +
ylab("Number of tunnels with mouse tracks") +
theme(axis.title.y = element_text(margin = margin(t = 0, r = 7, b = 0, l = 0))) +
theme(axis.title.y = element_text(margin = margin(t = 0, r = 7, b = 0, l = 0))) +
theme(legend.title = element_blank(), legend.position = c(-2, -2)) +
scale_fill_manual(values = c("control" = "#37a1c1", "design1" = "#9ce2cb", "design2" = "#445a9c"),
labels = c(" Control", " Single grade", " Mixed grade")) +
scale_x_discrete(labels = c('Dec 2019', "April 2019", "Nov 2019", "March 2020")) +
scale_y_continuous(breaks=seq(0, 50, 10), limits = c(0,52), expand = c(0,0)) +
theme(axis.line = element_blank())
有了这个,或者使用geom_col()
,当导出为ESP或PDF时,我会得到一个如下所示的图:
所有的列上都有细白线。我想这是和它计算每个数据点然后把它们堆积起来有关的吧?
如果我用geom_bar()
来做代码,它没有白线,但是它没有按照我想要的方式显示数据。
2条答案
按热度按时间webghufk1#
当你使用
geom_col()
时,你会得到每个数据值的一个条形段,这会产生白色,下面的例子以夸张的方式显示了这一点。最简单的解决方法是手动聚合,例如使用
group_by()
和summarize()
:由reprex package(v0.3.0)于2020年9月26日创建
注:
geom_col()
与geom_bar(stat = "identity")
相同。4xrmg8kj2#
你也可以把同样的变量添加到
aes
的color
参数中,这样你的aes
调用就变成了:aes(x = session, y = as.numeric(mice), fill = type, color = type))
您还必须具有相同的填充和颜色比例,因此添加:
scale_color_manual(values = c("control" = "#37a1c1", "design1" = "#9ce2cb", "design2" = "#445a9c"), labels = c(" Control", " Single grade", " Mixed grade"))
ggplot 2使用
fill
参数填充列/条形图,使用color
参数为列/条形图的轮廓着色。如果不指定轮廓颜色,可能会出现白色,正如您所观察到的。指定相同的轮廓和填充颜色可以避免您看到的问题。如Claus Wilke所建议的,预聚合在某些情况下会有所帮助。但不总是这样。例如,如果你有数千种填充颜色,你最终还是会得到白色,不管是不是预先聚合的。