"dot plot" 相对于带标准差的均值
"dot plot" relative to the mean with standard deviation
附图中的点表示各物种选择性的平均值。在这个情节中,我想要
1) 较小的点的字体较大,表示较小的体重(体重<9Kg)。我想通过将较小的点放大一点来减小点之间的差异比例,但保持其他最大(>9Kg)的大小相同。
2) 我也想在点周围添加一个黑色边框(这只是为了突出点)
3) 我想加上每个平均点的标准偏差 (sd)。平均值和标准偏差值分别显示在“媒体”和“'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
请注意,您的所有问题都已在 SO 上以一种或另一种形式得到解决。因此,这似乎是一个扩展的多重重复 post,彻底的 SO 搜索将为您提供所需的所有 answers/deetails。
具体来说:
可以使用 scale_size
、scale_size_area
或 scale_radius
之一来更改点大小。我不是很清楚你在第 1 点中的要求,但是看看这些函数并尝试使用函数的一些参数应该会给你你想要的。
相关 post 是:在 ggplot2 中定义最小点大小 - geom_point
, ggplot2: 如何手动调整 scale_area
要用黑色轮廓填充点,请使用 pch = 21
,然后使用 fill
美学 colour = "black"
。
这是以下内容的副本:Place a border around points
水平误差线可以用geom_errorbarh
实现;如果 geom_errorbar
.
垂直的(如果需要的话)
相关 post 是:ggplot2 : Adding two errorbars to each point in scatterplot、从 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)
附图中的点表示各物种选择性的平均值。在这个情节中,我想要
1) 较小的点的字体较大,表示较小的体重(体重<9Kg)。我想通过将较小的点放大一点来减小点之间的差异比例,但保持其他最大(>9Kg)的大小相同。
2) 我也想在点周围添加一个黑色边框(这只是为了突出点)
3) 我想加上每个平均点的标准偏差 (sd)。平均值和标准偏差值分别显示在“媒体”和“'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
请注意,您的所有问题都已在 SO 上以一种或另一种形式得到解决。因此,这似乎是一个扩展的多重重复 post,彻底的 SO 搜索将为您提供所需的所有 answers/deetails。
具体来说:
可以使用
scale_size
、scale_size_area
或scale_radius
之一来更改点大小。我不是很清楚你在第 1 点中的要求,但是看看这些函数并尝试使用函数的一些参数应该会给你你想要的。相关 post 是:在 ggplot2 中定义最小点大小 - geom_point , ggplot2: 如何手动调整 scale_area
要用黑色轮廓填充点,请使用
pch = 21
,然后使用fill
美学colour = "black"
。这是以下内容的副本:Place a border around points
水平误差线可以用
垂直的(如果需要的话)geom_errorbarh
实现;如果geom_errorbar
.相关 post 是:ggplot2 : Adding two errorbars to each point in scatterplot、从 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)