我正在尝试使用 R 中的 ggplot2 制作一个对数刻度的分组条形图。我的目标是在 R 中重新创建以下图。
因为产生它的程序不能制作高分辨率的图形。我需要一个对数刻度,因为数字范围从 1 到超过 1000,以及介于两者之间的任何地方。
这是数据框的简化版本以及我一直在使用的代码的片段。我已经能够使用 ggplot2 绘制绘图,但我的问题是数据中有很多 1 最终被绘制为 0,而 0 显示为 -1。这是我的 R 图的样子。
genus_counts <- read.table(text = "Genus variable value
1 Lepisosteus JBGC462 0
2 Lepomis JBGC462 6
3 Micropterus JBGC462 2
4 Perca JBGC462 2
5 Ictalurus JBGC462 1
6 Lepisosteus JBGC13 13
7 Lepomis JBGC13 0
8 Micropterus JBGC13 0
9 Perca JBGC13 0
10 Ictalurus JBGC13 0", header = TRUE)
ggplot(genus_counts, aes(x=Genus, y=value, fill=variable))+
geom_bar(stat="identity", position="dodge")+
scale_y_log10()
从数学上讲,我理解为什么会这样(而且条形图上的对数刻度并不理想)。但是有没有另一种方法可以调整情节(或我输入情节的数字)以更接近我试图模仿的情节?
最佳答案
如果您改用 scale_y_sqrt()
,则看起来像这样,这似乎与您的示例图非常匹配。我添加了一个值为 1000 的行,以说明您可以看到 1 和 2 等小值,以及大值。
关于r - ggplot 分组条形图上的对数刻度出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47932452/