如何从条形图中删除条形段轮廓?
How can I remove the bar segment outlines from a bar chart?
我有一个相当大的数据框,我想从中创建多面条形图。一切正常,但由于条形高度由许多单独的值堆叠而成,因此条形不再是纯色,而是以段轮廓颜色为主。
数据框如下所示:
> head(alldata[c("unit.size", "bppmbp")])
unit.size bppmbp
1 6 0.11927224
2 10 0.11430256
3 1 0.07951483
4 7 0.09442386
5 13 0.18884771
6 8 0.09939353
我想绘制每个 unit.size 的 bppmbp 总和(unit.size 从 1 到 51)。
这是我的代码:
ggplot(data) +
aes(x=unit.size, y=bppmbp, fill=unit.size) +
geom_bar(stat="identity")
结果是这样的。左图是PDF输出的,右图是PNG输出的(好一点,但还是能看到白边)。
来自 here 我知道如何指定轮廓颜色,但我还没有找到如何完全删除轮廓。我曾尝试将 color=""
、color=NA
或 color=element.empty()
添加到 geom_bar()
,但其中 none 确实如此。
如何删除该轮廓并获得实心条?也许对所有值进行 bin 并绘制 bin 总和?我希望有一个更简单的解决方案。
使用这样的示例数据框:
x group subject
1 50 test 1
2 52 test 1
3 23 test 1
4 53 test 2
5 23 test 2
6 53 test 2
7 62 control 3
8 63 control 3
9 36 control 3
10 57 control 4
11 58 control 4
12 58 control 4
library(Rmisc);library(ggplot2)
dfc_subjects<- summarySE(df,measurevar = "x",groupvars = c("subject","group"))
dfc_subjects
subject group N x sd se ci
1 1 test 3 41.66667 16.1967075 9.3511734 40.234852
2 2 test 3 43.00000 17.3205081 10.0000000 43.026527
3 3 control 3 53.66667 15.3079500 8.8380491 38.027056
4 4 control 3 57.66667 0.5773503 0.3333333 1.434218
与个别主题聚合,并减少情节中的维度。
ggplot(dfc_subjects, aes(x=group, y=x, color=group)) +
geom_bar(stat="identity")
你得到了这个丑陋的东西。但如果你这样做
dfc_group<- summarySE(df,measurevar = "x",groupvars = "group")
dfc_group
group N x sd se ci
1 control 6 55.66667 9.93311 4.055175 10.42416
2 test 6 42.33333 15.01555 6.130072 15.75785
ggplot(dfc_group, aes(x=group, y=x, color=group)) +
geom_bar(stat="identity")
你得到的是整个组而不是个别案例的聚合结果。
郑重声明,这就是我使用 aggregate()
:
解决问题的方法
> data.aggregate = aggregate(alldata$bppmbp, by = list(alldata$unit.size), sum)
> names(data.aggregate) = c("unit.size", "bppmbp")
这根据 unit.size 总结了 bppmbp 列,并为我提供了一个更清晰的数据框,我可以使用正常的 ggplot(...) + geom_bar(...)
:
进行绘制
> head(data.aggregate)
unit.size bppmbp
1 1 87.30581
2 2 89.60076
3 3 701.26025
4 4 94.01366
5 5 49.36587
6 6 203.07879
> ggplot(tablata, aes(x=unit.size, y=bppmbp, fill=unit.size)) +
geom_bar(stat="identity") +
xlab("Unit length") +
ylab("bp/Mbp")
我有一个相当大的数据框,我想从中创建多面条形图。一切正常,但由于条形高度由许多单独的值堆叠而成,因此条形不再是纯色,而是以段轮廓颜色为主。
数据框如下所示:
> head(alldata[c("unit.size", "bppmbp")])
unit.size bppmbp
1 6 0.11927224
2 10 0.11430256
3 1 0.07951483
4 7 0.09442386
5 13 0.18884771
6 8 0.09939353
我想绘制每个 unit.size 的 bppmbp 总和(unit.size 从 1 到 51)。
这是我的代码:
ggplot(data) +
aes(x=unit.size, y=bppmbp, fill=unit.size) +
geom_bar(stat="identity")
结果是这样的。左图是PDF输出的,右图是PNG输出的(好一点,但还是能看到白边)。
来自 here 我知道如何指定轮廓颜色,但我还没有找到如何完全删除轮廓。我曾尝试将 color=""
、color=NA
或 color=element.empty()
添加到 geom_bar()
,但其中 none 确实如此。
如何删除该轮廓并获得实心条?也许对所有值进行 bin 并绘制 bin 总和?我希望有一个更简单的解决方案。
使用这样的示例数据框:
x group subject
1 50 test 1
2 52 test 1
3 23 test 1
4 53 test 2
5 23 test 2
6 53 test 2
7 62 control 3
8 63 control 3
9 36 control 3
10 57 control 4
11 58 control 4
12 58 control 4
library(Rmisc);library(ggplot2)
dfc_subjects<- summarySE(df,measurevar = "x",groupvars = c("subject","group"))
dfc_subjects
subject group N x sd se ci
1 1 test 3 41.66667 16.1967075 9.3511734 40.234852
2 2 test 3 43.00000 17.3205081 10.0000000 43.026527
3 3 control 3 53.66667 15.3079500 8.8380491 38.027056
4 4 control 3 57.66667 0.5773503 0.3333333 1.434218
与个别主题聚合,并减少情节中的维度。
ggplot(dfc_subjects, aes(x=group, y=x, color=group)) +
geom_bar(stat="identity")
你得到了这个丑陋的东西。但如果你这样做
dfc_group<- summarySE(df,measurevar = "x",groupvars = "group")
dfc_group
group N x sd se ci
1 control 6 55.66667 9.93311 4.055175 10.42416
2 test 6 42.33333 15.01555 6.130072 15.75785
ggplot(dfc_group, aes(x=group, y=x, color=group)) +
geom_bar(stat="identity")
你得到的是整个组而不是个别案例的聚合结果。
郑重声明,这就是我使用 aggregate()
:
> data.aggregate = aggregate(alldata$bppmbp, by = list(alldata$unit.size), sum)
> names(data.aggregate) = c("unit.size", "bppmbp")
这根据 unit.size 总结了 bppmbp 列,并为我提供了一个更清晰的数据框,我可以使用正常的 ggplot(...) + geom_bar(...)
:
> head(data.aggregate)
unit.size bppmbp
1 1 87.30581
2 2 89.60076
3 3 701.26025
4 4 94.01366
5 5 49.36587
6 6 203.07879
> ggplot(tablata, aes(x=unit.size, y=bppmbp, fill=unit.size)) +
geom_bar(stat="identity") +
xlab("Unit length") +
ylab("bp/Mbp")