小编mon*_*and的帖子

使用ggplot2从数据框中绘制多条线

我试图使用ggplot2绘制多行.我的数据适合数据框如下:

> rs
  time           1           2           3           4
1  200 17230622635 17280401147 17296993985 17313586822
2  400 22328386154 22456712709 22499488227 22542263745
3  600 28958840968 29186097622 29261849840 29337602058
4  800 40251281810 40650094691 40783032318 40915969945
5 1000 73705771414 74612829244 74915181854 75217534464
Run Code Online (Sandbox Code Playgroud)

我想使用"时间"列作为x值.其他列是不同行中的y的y值.在上面的数据中,有4行,每行包含5个点.更具体地说,第一行有点(200,17230622635),(400,22328386154),(600,28558840968)等.第二行有点(200,17280401147),(400,22456712709)等(如果你需要进一步解释数据格式,最后请看PS.)

要生成类似的数据,您可以使用以下代码:

rs = data.frame(seq(200, 1000, by=200), runif(5), runif(5), runif(5))
names(rs)=c("time", 1:3)
Run Code Online (Sandbox Code Playgroud)

我在堆栈溢出时遵循了一些示例,并尝试使用reshape2和ggplot2来执行此绘图:

我首先将数据融化为"长格式":

library('reshape2')
library('ggplot2')
melted = melt(rs, id.vars="time")
Run Code Online (Sandbox Code Playgroud)

然后使用以下标准绘制数据:

ggplot() + geom_line(data=melted, aes(x="time", y="value", group="variable"))
Run Code Online (Sandbox Code Playgroud)

但是,我得到了一个没有点也没有线的空图.

任何人都可以帮我看看我的手术有什么问题吗?

PS

关于数据格式:

你可以想象班上有很多学生,我们有几个小组的测验.每行包含一个学生的数据:第一列是测验编号,其余列是他/她的分数.对于每个学生,我们想要绘制一条线来反映他/她的分数如何在不同的测验中变化,每个点是某个学生的一个测验的分数.由于有多个学生,我们想画多行.

关于融化的数据:

具体到我上面显示的数据,我从melt()函数得到的数据是:

> melted
   time variable …
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2

13
推荐指数
1
解决办法
3万
查看次数

如何使用一个脚本构建.deb .rpm .dmg等

这是我的问题:

我有一个程序,并希望以二进制格式分发它,以便用户不需要自己编译它.

我已经构建了一个.deb包.但是,我记得,应该有一些程序,它需要一个配置文件,并生成不同格式的不同二进制包,如.deb,.rpm,甚至.dmg,.msi等.意思是,我只需要告诉它哪个文件应该包含在包中(以及如何构建它),它可以为我生成不同的包.

在搜索了一些关键词后,我注意到在不知道其名称的情况下很难找到这样的程序.(我确实应该有类似的东西.事实上,我记得我在某个地方看过它.)

debian rpm

4
推荐指数
2
解决办法
3433
查看次数

如何在bash中读取文件*和*stdin

这是我的任务:逐行从文件中读取一些数据.对于每一行,如果它满足某些条件,则要求用户输入内容并根据用户的输入继续.

我知道如何从shell脚本逐行阅读内容:

while read line; do
   echo $line
done < file.txt
Run Code Online (Sandbox Code Playgroud)

但是,如果我想做什么与用户交互的内部循环体.从概念上讲,这就是我想要的:

while read line; do
    echo "Is this what you want: $line [Y]es/[n]o"
    # Here is the problem:
    # I want to read something from standard input here.
    # However, inside the loop body, the standard input is redirected to file.txt
    read INPUT
    if [[ $INPUT == "Y" ]]; then
       echo $line
    fi
done < file.txt
Run Code Online (Sandbox Code Playgroud)

我应该用另一种方式来读取文件吗?或者另一种读stdin的方法?

bash shell

3
推荐指数
1
解决办法
1085
查看次数

标签 统计

bash ×1

debian ×1

ggplot2 ×1

plot ×1

r ×1

rpm ×1

shell ×1