gpt4 book ai didi

r - 如何避免 ggplot2 条形图中条形之间的间距不均匀?

转载 作者:行者123 更新时间:2023-12-02 01:27:50 25 4
gpt4 key购买 nike

我目前正在根据实验数据制作条形图。似乎当我在连续的 x 尺度上绘制条形时,条形之间的间距/间隙不均匀。我认为这是因为缺少特定时间的数据点,但是有什么方法可以使差距均匀吗?

我使用以下简单代码来绘制此图:

dataset_test %>%
ggplot(aes(time, normalized_gfp)) +
geom_bar(stat="identity", size=.1, fill="green", color="green", alpha=.4)

gfp485 条形图示例:

[enter image description here ]

数据示例的头部(在本例中我绘制了 gfp485,但我将在最终图中的顶部绘制“od”)

> head(dataset,20)
time media gfp485 od
1 0.24 IO+CasA_gfp 0.3333333 0.006666667
2 2.64 IO+CasA_gfp -4.3333333 0.003333333
3 5.04 IO+CasA_gfp 5.6666667 0.003333333
4 7.20 IO+CasA_gfp 10.6666667 0.010000000
5 9.60 IO+CasA_gfp 6.3333333 0.023333333
6 12.00 IO+CasA_gfp 358.3333333 0.060000000
7 14.40 IO+CasA_gfp 1216.6666667 0.086666667
8 16.56 IO+CasA_gfp 2422.6666667 0.100000000
9 18.96 IO+CasA_gfp 3550.3333333 0.113333333
10 21.36 IO+CasA_gfp 4770.3333333 0.140000000
11 23.52 IO+CasA_gfp 5671.3333333 NA
12 25.92 IO+CasA_gfp 6491.0000000 0.166666667
13 28.32 IO+CasA_gfp 6862.6666667 0.176666667
14 30.72 IO+CasA_gfp 7028.3333333 0.166666667
15 32.88 IO+CasA_gfp 6704.0000000 0.166666667
16 35.28 IO+CasA_gfp 6480.3333333 0.153333333
17 37.68 IO+CasA_gfp 6312.6666667 0.150000000
18 40.08 IO+CasA_gfp 6171.0000000 0.143333333
19 42.24 IO+CasA_gfp 5945.3333333 0.136666667
20 44.64 IO+CasA_gfp 5889.6666667 0.123333333

提前非常感谢您:))

最佳答案

即使没有缺失值,我们也可以看到示例数据中条形的间距不均匀:

library(ggplot2)

ggplot(dataset_test, aes(time, gfp485)) +
geom_col(size= .1, fill = "green", color = "green", alpha = 0.4)

其原因是您的观察在时间上分布不均匀。如果我们检查连续时间值之间的差异,我们会发现它们并不完全相同:

diff(dataset_test$time)
#> [1] 2.40 2.40 2.16 2.40 2.40 2.40 2.16 2.40 2.40 2.16 2.40 2.40 2.40 2.16
#> [15] 2.40 2.40 2.40 2.16 2.40

如果您准备更改实际数据以获得更漂亮的绘图,但保持总体时间等于原始时间,您可以这样做:

ggplot(dataset_test, 
aes(x = min(time) + seq(0, by = mean(diff(time)), length = length(time)),
y = gfp485)) +
geom_col(size= .1, fill = "green", color = "green", alpha = 0.4) +
labs(x = "time")

enter image description here

但是,如果您有不等间隔的时间数据和 y 轴上的连续变量,那么使用 geom_area 会更诚实(并且我认为更具视觉吸引力):

ggplot(dataset_test, aes(time, gfp485)) +
geom_area(fill = "#90d850", color = "#266825", alpha = 0.4, size = 0.5) +
theme_minimal(base_size = 16) +
theme(plot.background = element_rect(fill = "#fafaf4", color = NA))

enter image description here

创建于 2022 年 10 月 11 日 reprex v2.0.2

关于r - 如何避免 ggplot2 条形图中条形之间的间距不均匀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74034420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com