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

标签 r ggplot2

我是 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/

相关文章:

r - 带有插入符号错误的 SVM 分类(基本)

r - 将列表转换为多个数据框,以便能够仅将每个数据框的一列转换为数字数据

r - 使用 ggplot2 对分组数据进行多个 stat_function

r - 在 ggplot2 中的 x 轴上绘制有序因子

python - Pandas /matplotlib : faceting bar plots

r - 在列标题和成对变量中嵌入数据的数据透视表

r - 在R Ubuntu中安装topicmodels时出错

r - 基于 R 中另一列的值进行计数

r - 在 ggplot2 中使用带有 stat_function 的图例

r - 带有 ggplot2 for R 的多色标题