gpt4 book ai didi

r - 使用 ggplot2 对多个梯度进行分组

转载 作者:行者123 更新时间:2023-12-04 11:27:13 25 4
gpt4 key购买 nike

我是 R 的新手,如果答案显而易见,或者我的数据组织不当,我深表歉意。

我正在尝试绘制声音特征(熵)随时间变化的图表。我使用拍号信息将录音分成“回合”。我能够创建一个散点图,其中的线条对应于回合编号 (0-9)。

代码如下所示:

newbout <- a$start_on
signal <- diff(newbout)

Faulkner <- data.frame(Time=a$start_on[1:length(signal)],Entropy=a$min_ent[1:length(signal)])
Gatsby <- data.frame(x=Faulkner$Entropy[2:length(Faulkner$Entropy)],
y=Faulkner$Entropy[1:length(Faulkner$Entropy)-1],
z=Faulkner$Time[1:length(Faulkner$Time)-1])
Gatsby$grp <- cumsum(signal[1:length(signal)-1]<0)

require(ggplot2)
require(grid)
b <- ggplot(Gatsby, aes(x = x, y = y)) +
geom_point(size = 2,aes(color=grp)) +
geom_path(aes(color=grp)) +
xlab("Min entropy") + ylab("Min entropy") + ggtitle("a408 d136") +
theme(axis.text=element_text(size=10),
axis.title=element_text(size=10), plot.title=element_text(size=10))
b

数据框本身看起来像这样:

        x     y           z grp
1 -3.90 -2.06 111.74600 0
2 -3.67 -3.90 224.49000 0
3 -3.08 -3.67 454.96600 0
4 -4.14 -3.08 643.53700 0
5 -2.37 -4.14 735.32900 0
6 -2.79 -2.37 821.13400 0
7 -6.96 -2.79 883.99100 0
8 -6.05 -6.96 946.84800 0
9 -3.19 -6.05 1045.62000 0
10 -2.74 -3.19 1244.17000 0
11 -3.23 -2.74 1511.56000 0
12 -3.57 -3.23 1632.29000 0
13 -2.74 -3.57 1729.07000 0
14 -3.99 -2.74 1814.88000 0
15 -6.70 -3.99 1875.74000 0
16 -6.63 -6.70 1936.60000 0
17 -4.06 -6.63 2037.37000 0
18 -3.29 -4.06 2247.89000 1
19 -4.91 -3.29 1.99546 1
20 -4.19 -4.91 230.47600 1
21 -2.31 -4.19 458.95700 1
22 -2.03 -2.31 995.73700 1
23 -3.43 -2.03 1122.45000 1
24 -3.75 -3.43 1240.18000 1
25 -2.56 -3.75 1334.97000 1
26 -4.19 -2.56 1417.78000 1

目前真的很难在情节中形象化地看到各个回合的开始和结束。是否可以为每个组分配不同的梯度,而不必为每个回合创建单独的数据框并手动添加路径?理想情况下,我想要类似的东西,第 0 次是蓝色(从亮到暗),第 1 次是绿色(从亮到暗),其中渐变比例由时间变量 z 控制。任何建议将不胜感激!

最佳答案

多个颜色渐变可能不是可视化数据的最佳方式,并且 ggplot 并不真正支持这种方式,但是可以通过组合颜色和 alpha 渐变来实现您所描述的内容:

d <- data.frame(x=rep(1:20, 5), y=rnorm(100, 5, .2) + rep(1:5, each=20), z=rep(1:20, 5), grp=factor(rep(1:5, each=20)))

ggplot(d) +
geom_path(aes(x, y, color=grp), size=2) +
geom_path(aes(x, y, group=grp, alpha=z), size=2)

enter image description here

关于r - 使用 ggplot2 对多个梯度进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24617897/

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