【发布时间】:2014-01-30 02:50:07
【问题描述】:
我有一个时间序列轨迹数据集。此外,每个时间序列都带有一个统计权重因子:例如,时间序列 #4 的权重可能为 0.023,而时间序列 #25 的权重可能为 0.321。
我有很多这样的时间序列,我想将它们全部绘制在同一个图上(以相同的颜色),并让它们的不透明度与它们的重量成正比,以便可视化加权分布在空间和时间上。
我已经使用 ggplot2 几乎一路走到了那里,但是花了几天时间努力使用 alpha aes 来正确完成这项工作并且没有运气。我正在尝试为 alpha aes 提供权重向量,但它似乎不起作用。不幸的是,这里没有其他答案使用数据框外部的 alpha 值来源。
这是语法问题,还是我想错了? alpha aes 似乎旨在使用数据框内部的某些内容作为输入,但我无法弄清楚如何将权重集成到数据框而不会使我的数据膨胀到无法管理的大小。
以下代码中的所有内容都有效,除了最后一行:
# parameters for test data
N_timepoints <- 25
N_series <- 1000
# generate N_timepoints*N_series matrix of data
test_data <- matrix(rnorm(N_timepoints*N_series,mean=0,sd=0.1), N_timepoints, N_series)
test_data <- apply(test_data, 2, cumsum)
test_data <- as.data.frame(test_data)
# generate N_series length vector of weights
test_weights <- rexp(N_series, rate=1)
test_weights <- test_weights/sum(test_weights)
test_weights <- as.data.frame(test_weights)
# add a column to the data frame to label each timepoint
test_timepoints <- seq(N_timepoints)
test_data_and_timepoints <- cbind(test_timepoints, test_data)
test_data_and_timepoints_long <- melt(test_data_and_timepoints, id="test_timepoints")
# construct basic plot
p_test <- ggplot(data=test_data_and_timepoints_long, aes(x= test_timepoints, y=value, group=variable))
# tweak background and labels
p_test <- p_test +
theme_bw() +
theme(legend.position="none") +
ylab("Coordinate") +
xlab("Time Point")
# plot with constant alpha -- not what I want, but close
p_test_alpha <- p_test + geom_line(aes(alpha = 1)) + scale_alpha(range = c(0.01, 0.1))
# plot with alpha proportional to weight -- what I actually want, but doesn't work
p_test_var_alpha <- p_test + geom_line(aes(alpha = test_weights))
【问题讨论】:
标签: r ggplot2 transparency alpha