我正在尝试使用 R 中的 ggplot2 制作一个对数刻度的分组条形图。我的目标是在 R 中重新创建以下图。

r - ggplot 分组条形图上的对数刻度出现问题-LMLPHP

因为产生它的程序不能制作高分辨率的图形。我需要一个对数刻度,因为数字范围从 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()

r - ggplot 分组条形图上的对数刻度出现问题-LMLPHP

从数学上讲,我理解为什么会这样(而且条形图上的对数刻度并不理想)。但是有没有另一种方法可以调整情节(或我输入情节的数字)以更接近我试图模仿的情节?

最佳答案

如果您改用 scale_y_sqrt() ,则看起来像这样,这似乎与您的示例图非常匹配。我添加了一个值为 1000 的行,以说明您可以看到 1 和 2 等小值,以及大值。

r - ggplot 分组条形图上的对数刻度出现问题-LMLPHP

关于r - ggplot 分组条形图上的对数刻度出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47932452/

10-12 17:23