使用ggplot意外填充了颜色时间服务器

时间:2015-03-19 13:17:01

标签: r colors ggplot2

我是ggplot的初学者,我试图用它来绘制一些时间序列数据。 我想在属性p_off(float)变化的不同条件下绘制bound_transporter_in_evolution.mean作为时间的函数。

p4 <- ggplot(data=df, aes(x=timesteps.mean)) +
geom_line(aes(y=bound_transporter_in_evolution.mean, color=p_off)) +
xlab(label="Time (s)") +
ylab(label="Number of bound 'in' transporters")

ggsave("p4.pdf", width=8, height=3.3)

我得到以下情节:

enter image description here

我期待这个结果,但用一条线代替点:

enter image description here

谢谢

2 个答案:

答案 0 :(得分:0)

这是str(df)的输出:

'data.frame':   150010 obs. of  34 variables:
$ bound_transporter_evolution.low     : num [1:150010(1d)] 0 11.4 26.1 41.8 48.2 ...
$ bound_transporter_evolution.mean    : num [1:150010(1d)] 0 15 28.2 45 53.8 63.8 71.6 77.8 86.2 91.2 ...
$ bound_transporter_evolution.up      : num [1:150010(1d)] 0 18.6 30.3 48.2 59.4 ...
$ bound_transporter_in_evolution.low  : num [1:150010(1d)] 0 11.4 26.1 41.8 48.2 ...
$ bound_transporter_in_evolution.mean : num [1:150010(1d)] 0 15 28.2 45 53.8 63.8 71.6 77.8 86.2 91.2 ...
$ bound_transporter_in_evolution.up   : num [1:150010(1d)] 0 18.6 30.3 48.2 59.4 ...
$ bound_transporter_out_evolution.low : num [1:150010(1d)] 0 0 0 0 0 0 0 0 0 0 ...
$ bound_transporter_out_evolution.mean: num [1:150010(1d)] 0 0 0 0 0 0 0 0 0 0 ...
$ bound_transporter_out_evolution.up  : num [1:150010(1d)] 0 0 0 0 0 0 0 0 0 0 ...
$ free_transporter_evolution.low      : num [1:150010(1d)] 200 181 170 152 141 ...
$ free_transporter_evolution.mean     : num [1:150010(1d)] 200 185 172 155 146 ...
$ free_transporter_evolution.up       : num [1:150010(1d)] 200 189 174 158 152 ...
$ free_transporter_in_evolution.low   : num [1:150010(1d)] 186 172 158 139 127 ...
$ free_transporter_in_evolution.mean  : num [1:150010(1d)] 188 173 160 143 135 ...
$ free_transporter_in_evolution.up    : num [1:150010(1d)] 191 175 162 148 142 ...
$ free_transporter_out_evolution.low  : num [1:150010(1d)] 9.18 9.18 9.18 9.18 9.18 ...
$ free_transporter_out_evolution.mean : num [1:150010(1d)] 11.6 11.6 11.6 11.6 11.6 11.6 11.6 11.6 11.6 11.6 ...
$ free_transporter_out_evolution.up   : num [1:150010(1d)] 14 14 14 14 14 ...
$ glutamate_evolution.low             : num [1:150010(1d)] 2000 1981 1970 1951 1939 ...
$ glutamate_evolution.mean            : num [1:150010(1d)] 2000 1985 1971 1954 1943 ...
$ glutamate_evolution.up              : num [1:150010(1d)] 2000 1989 1973 1957 1948 ...
$ p_off                               : num [1:150010(1d)] 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 ...
$ simulation_name                     : Factor w/ 1 level "Variable p-off large diffusion-limited area": 1 1 1 1 1 1 1 1 1 1 ...
$ timesteps.low                       : num [1:150010(1d)] 0e+00 1e-06 2e-06 3e-06 4e-06 5e-06 6e-06 7e-06 8e-06 9e-06 ...
$ timesteps.mean                      : num [1:150010(1d)] 0e+00 1e-06 2e-06 3e-06 4e-06 5e-06 6e-06 7e-06 8e-06 9e-06 ...
$ timesteps.up                        : num [1:150010(1d)] 0e+00 1e-06 2e-06 3e-06 4e-06 5e-06 6e-06 7e-06 8e-06 9e-06 ...
$ transporter_in_evolution.low        : num [1:150010(1d)] 186 186 186 186 186 ...
$ transporter_in_evolution.mean       : num [1:150010(1d)] 188 188 188 188 188 ...
$ transporter_in_evolution.up         : num [1:150010(1d)] 191 191 191 191 191 ...
$ transporter_out_evolution.low       : num [1:150010(1d)] 9.18 9.18 9.18 9.18 9.18 ...
$ transporter_out_evolution.mean      : num [1:150010(1d)] 11.6 11.6 11.6 11.6 11.6 11.6 11.6 11.6 11.6 11.6 ...
$ transporter_out_evolution.up        : num [1:150010(1d)] 14 14 14 14 14 ...
$ variable_parameter                  : Factor w/ 1 level "p_off": 1 1 1 1 1 1 1 1 1 1 ...
$ variable_value                      : num [1:150010(1d)] 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 ...

答案 1 :(得分:0)

由于p_off是一个数值变量,ggplot只会创建一条连接所有点的线,并沿着值对其进行着色。如果你想要分隔线,你可以将你的着色变量转换为一个因子(假设你有不同数量的不同值)。让我们以数字颜色变量为例:

df=data.frame(x=c(1:5, 1:5), y=rnorm(10), z=c(1,1,1,1,1,2,2,2,2,2))
ggplot(data=df, aes(x=x)) + geom_line(aes(x=x, y=y, color=z))

enter image description here

由于连续的点来自不同的类别,因此没有任何意义。现在把它变成一个因素:

ggplot(data=df, aes(x=x)) + geom_line(aes(x=x, y=y, color=factor(z)))

enter image description here

在你的第一个图表中,该行不断地从一个p_off值变为另一个p_off值,并且由于你有一个非常大的数据集,它很快就会使屏幕饱和。