【问题标题】:"dot plot" relative to the mean with standard deviation“点图”相对于具有标准偏差的平均值
【发布时间】:2019-02-03 10:44:08
【问题描述】:

在附图中,点表示每个物种的选择性平均值。在这个情节中,我想

1) 具有较大字体大小的较小点表示较小的体重 (bodymass9Kg)保持相同的大小。

2)我也想在点周围添加一个黑色边框(这只是为了突出点)

3) 我想添加每个平均点的标准偏差 (sd)。平均值和标准差值分别显示在“media”和“sp”列中。

有人可以帮我吗?谢谢

library(tidyverse)
Dataset %>%
ggplot(aes(x = media, y = specie, 
             colour = energetic_level, size = log(bodymass))) +
  geom_point(alpha = .9) +
  scale_colour_continuous(low = 'green', high = 'red') +
  labs(x = 'Response rate', y = 'Species') +
  ggthemes::theme_few() +
  theme(axis.text.x = element_text(angle = 90, vjust = .5)) 
media   dp  specie  bodymass    energetic_level
4.063478961 3.627269468 AAChlor_cyn 5000.01 3.2
4.05537378  3.585436083 ABOtol_cras 1206.61 2.4
3.999309751 3.818689333 ACMiop_tal  1248.86 3
3.945049659 3.855743536 BACerc_mit  5041.29 2.5
3.862515658 3.687924328 BCThry_swin 4000    2.8
3.655056928 3.732785731 DAHys_afri  14936.02    2.8
3.56041853  3.478167947 DBLep_cap   1500    3
3.402431689 3.446995588 DCCivet_civ 12075.58    4.6
3.401743858 3.569716116 FGenet_gen  1756.17 6.1
3.39029097  3.414370313 GALept_serv 11999.96    7
3.39009097  1.552336764 GBPhil_mont 4896.05 2.6
3.32029097  1.920646552 HOryct_afer 56175.2 5
3.239734182 3.540636613 IHipp_amph  1536310.4   3
3.154474564 3.526089786 JBSylv_grim 15639.15    3.2
2.883544415 3.007873613 MAPota_larv 69063.79    3.3
2.719993477 1.308813082 MBTrag_scri 43250.39    3
2.718552867 3.080761281 MCPant_pa   52399.99    7
1.982822501 2.085016316 MDRed_aru   58059.24    3
1.529854402 1.814623348 MFSync_caf  592665.98   3
1.443776834 1.254052861 NLox_afric  3824539.93  3
1.402107786 1.637998721 OCan_mes    22000   5.2
1.164299734 1.397597868 PPant_le    158623.93   6.8
0.887732043 1.318886523 QLyc_pict   21999.99    7
0.82952687  0.789227213 UCroc_croc  63369.98    7
0.782973623 0.570878282 VTrag_oryx  562592.69   2.7
0.477482615 0.624782141 YHipp_eq    264173.96   3

【问题讨论】:

  • 您现在已经问了三次这个问题。也许需要一些时间来找出为什么它没有生成答案?
  • 我删除了之前的问题并完全重新表述了它们。所以我认为创建一个新帖子比将这个更改放在旧帖子中更好
  • 1) 不确定要更改的文本 - AFAIK 轴文本不能有不同的大小。 2)添加一个稍大的黑点并覆盖你的点。 3) 使用geom_pointrange
  • 非常感谢您的回答。你知道增加点字体大小的命令吗?
  • 你好,弗兰。我敦促您在 SO 上查看posting rules。正如@NelsonGon 所说,您已经问了三次 same 问题,完全忽略了任何要求您改进上述问题的 cmets,而是继续作为新问题重新发布。这不是 SO 的工作方式,通常会导致您很快获得大量反对票。请记住,如果您收集了太多反对票,您将失去完全发布问题的特权。删除问题不会避免这种情况。所以请多体谅; [...]

标签: r ggplot2 tidyverse standard-deviation


【解决方案1】:

请注意,您的所有问题都已在 SO 上以一种或另一种形式解决。因此,这似乎是一个扩展的多重复帖子,彻底的 SO 搜索将为您提供所需的所有答案/详细信息。

具体来说:

  1. 可以使用scale_sizescale_size_areascale_radius 之一来更改点大小。我并不完全清楚您在第 1 点中要问什么,但是看看这些函数并使用一些函数的参数应该会给您想要的。

    相关帖子为:defining minimum point size in ggplot2 - geom_point ggplot2: how to manually adjust scale_area

  2. 要使用黑色轮廓填充点,请使用pch = 21,然后使用fill 美学和colour = "black"

    这是重复的:Place a border around points

  3. 水平误差线可以用geom_errorbarh实现;如果geom_errorbar,则垂直(如有必要)。

    相关帖子为:ggplot2 : Adding two errorbars to each point in scatterplotRemove endpoints from error bars in ggplot2

总之,你会得到这样的结果:

library(ggthemes)
library(ggplot2)
ggplot(df, aes(media, specie, fill = energetic_level)) +
    geom_errorbarh(aes(xmax = media + dp, xmin = media - dp)) +
    geom_point(aes(size = log(bodymass)), pch = 21, colour = "black", alpha = .9) +
    scale_fill_continuous(low = 'green', high = 'red') +
    scale_size_area() + 
    labs(x = 'Response rate', y = 'Species') +
    ggthemes::theme_few() +
    theme(axis.text.x = element_text(angle = 90, vjust = .5))


样本数据

df <- read.table(text =
    "media   dp  specie  bodymass    energetic_level
4.063478961 3.627269468 AAChlor_cyn 5000.01 3.2
4.05537378  3.585436083 ABOtol_cras 1206.61 2.4
3.999309751 3.818689333 ACMiop_tal  1248.86 3
3.945049659 3.855743536 BACerc_mit  5041.29 2.5
3.862515658 3.687924328 BCThry_swin 4000    2.8
3.655056928 3.732785731 DAHys_afri  14936.02    2.8
3.56041853  3.478167947 DBLep_cap   1500    3
3.402431689 3.446995588 DCCivet_civ 12075.58    4.6
3.401743858 3.569716116 FGenet_gen  1756.17 6.1
3.39029097  3.414370313 GALept_serv 11999.96    7
3.39009097  1.552336764 GBPhil_mont 4896.05 2.6
3.32029097  1.920646552 HOryct_afer 56175.2 5
3.239734182 3.540636613 IHipp_amph  1536310.4   3
3.154474564 3.526089786 JBSylv_grim 15639.15    3.2
2.883544415 3.007873613 MAPota_larv 69063.79    3.3
2.719993477 1.308813082 MBTrag_scri 43250.39    3
2.718552867 3.080761281 MCPant_pa   52399.99    7
1.982822501 2.085016316 MDRed_aru   58059.24    3
1.529854402 1.814623348 MFSync_caf  592665.98   3
1.443776834 1.254052861 NLox_afric  3824539.93  3
1.402107786 1.637998721 OCan_mes    22000   5.2
1.164299734 1.397597868 PPant_le    158623.93   6.8
0.887732043 1.318886523 QLyc_pict   21999.99    7
0.82952687  0.789227213 UCroc_croc  63369.98    7
0.782973623 0.570878282 VTrag_oryx  562592.69   2.7
0.477482615 0.624782141 YHipp_eq    264173.96   3", header = T)

【讨论】:

  • Maurits 非常感谢您的帮助我在这里提交问题之前搜索了很多,但我使用了错误的术语。你写的链接也很有用。再次感谢您对脚本和链接的帮助,我会在下一个问题之前更加注意 SO 规则!
  • 嗨@FranBraga;不客气。请不要气馁以后发帖;有时这里的语气可能有点生硬,请记住,这里的大多数人都是自愿利用空闲时间回答其他人的问题,而且你越容易为他人提供答案,你就会得到越积极的回应。这包括试图找到相关/相似的问题。最棒的是,过去常常有人会问过非常相似的问题。祝你工作顺利!
猜你喜欢
  • 1970-01-01
  • 2019-04-15
  • 2021-04-25
  • 1970-01-01
  • 2014-04-27
  • 2021-03-06
  • 2021-05-22
  • 1970-01-01
  • 2018-03-08
相关资源
最近更新 更多