热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在R中分割数据集和绘图-HowtoSplitDatasetandplotinR

Iamusingadatasetlike:我使用的数据集如下:14843414566156711628915882641742566266374

I am using a data set like:

我使用的数据集如下:

1  48434  14566
1  56711  6289
1  58826  4174
2  56626  6374
2  58888  4112
2  59549  3451
2  60020  2980
2  60468  2532
3  56586  6414
3  58691  4309
3  59360  3640
3  59941  3059
.
.
.
10  56757  6243
10  58895  4105
10  59565  3435
10  60120  2880
10  60634  2366

I need a plot in R of 3rd column for each value of first column i.e. for above data there would be 10 different plots of (each group 1-10) of values of 3rd column. x-axis is number of Iterations and Y-axis is the values with max 63000. I also need to connect the dots with a line in color red. I am new to R and have been reading documentation but that confused me more. could any body plz help.

我需要在R中为第一列的每个值绘制一个图,即对于上面的数据,会有10个不同的图(每组1-10)为第三列的值。x轴是迭代次数,y轴是最大63000的值。我还需要用红色的线把这些点连起来。我是R的新手,一直在阅读文档,但这让我更加困惑。任何人都能帮忙吗?

EDIT: I actually want line graph of V3 values. the number of rows of v3 column would be on x-axis and v3 values on y-axis. And I want different graphs each for a group indicated by v1. Chase's solution works except that I want the axis shifted, the V3 values should be on y-axis.here is example alt text

编辑:实际上我想要V3值的线图。v3列的行数在x轴上,v3值在y轴上。我要用不同的图来表示v1表示的基团。Chase的解决方案是可行的,只是我想要平移轴,V3的值应该在y轴上。下面是例子

EDIT2: @Roman, Here is the code I am executing.

@Roman,这是我正在执行的代码。

library(lattice)
d <- read.delim("c:\\proj58\\positions23.txt",sep="")
d <- do.call(rbind, lapply(split(d, d$V1), function(x) {
    x$iterations <- order(x$V3, decreasing=TRUE)
    x
}))
xyplot(V3 ~ iterations | V1, type="l", data=d)

This is the error I get,

这是我得到的误差,

    > 
>  source("C:\\proj58\\plots2.R")
> d
       V1    V2    V3 iterations
1.1     1 48434 14566          1
1.2     1 56711  6289          2
1.3     1 58826  4174          3
1.4     1 59528  3472          4

I am not getting any plot?? what am I missing OK: Got It. don't know what was wrong. Here it is,

我没有任何阴谋?我错过了什么好吧,知道了。不知道怎么了。在这里,

alt text

2 more things, how to change V1 labels on the boxes to actual numbers like 1,2,... secondly I have files that contain 100 groups, I tried one and it made all graphs on a single page (unreadable obviously), can I make these on more than one windows?

还有2件事,如何将盒子上的V1标签更改为1、2、……其次,我有包含100个组的文件,我试过一个,它让所有的图形都在一个页面上(显然不能读),我可以在不止一个窗口上做这些吗?

3 个解决方案

#1


2  

Well, first you need to create a variable with the row number, for each subset of the first variable separately. Here's one way to do it, by splitting the data set by the first variable, making a new variable that has the row number, and recombining.

首先,你需要为第一个变量的每个子集创建一个带有行号的变量。这里有一种方法,通过将数据集分解为第一个变量,创建一个具有行号的新变量,然后重新组合。

You also probably want V1 to be a factor (a categorical variable).

你也可能希望V1是一个因子(一个分类变量)。

d <- do.call(rbind, lapply(split(d, d$V1), function(x) {
    x$iterations <- 1:nrow(x)
    x
}))
d$V1 <- factor(d$V1)

Then using the lattice library, you'd do something like

然后用晶格库,你会做一些类似的事情

xyplot(V3 ~ iterations | V1, type="l", data=d)

To make the plots appear on more than one page, limit the number of plots on a page using the layout option. You'll need to save the plot to a file that supports multi-page output to do that. For example, for 5 rows and 5 columns:

要使这些图出现在一个以上的页面上,使用布局选项限制一个页面上的绘图数量。您将需要将绘图保存到支持多页输出的文件中,以实现这一点。例如,5行5列:

trellis.device("pdf", file="myplot.pdf")
p <- xyplot(V3 ~ iterations | V1, type="l", data=d, layout=c(5,5))
plot(p)
dev.off()

Also, to make the plot appear when running the code using source, you need to specifically plot the output from the xyplot command, like

此外,要使代码在使用源代码运行时显示图表,您需要特别绘制xyplot命令的输出,如

p <- xyplot(...)
plot(p)

When running at the console, this is not necessary as the plot (well, actually, the print function) is called on it by default.

当在控制台运行时,这是不必要的,因为在默认情况下会调用plot(实际上是print函数)。

#2


1  

Like Chase said, please clarify on your question so that we can envision better what you're trying to achieve. To add to the heap of confusion, here's a lattice ballpark solution of what I think you may be after.

就像蔡斯说的,请澄清你的问题,这样我们就能更好地想象你想要达到的目标。为了增加混乱,这里有一个我认为你可能正在追求的晶格球解。

library(lattice)
fdt <- data.frame(col1 = seq(from = 1, to = 10, each = 10),
        col2 = round(56 * rnorm(100, mean = 30, sd = 5)),
        col3 = round(20 * rnorm(100, mean = 11,)))
xyplot(col3 ~ 1:100 | col1, data = fdt)

alt text

#3


0  

I'm not exactly following what it is that you want to plot, but here's an approach that should get your down the right path and you can fill in the appropriate plotting command...or clarify your question and explain what the final result of your plot should look like in more detail.

我并没有完全遵循你想要绘制的内容,但是这里有一种方法可以让你沿着正确的路径前进,你可以输入相应的绘图命令……或者澄清你的问题,详细解释你的故事的最终结果。

We are going to take advantage of two packages: plyr and ggplot2. We will use plyr to split up your data into the appropriate groups and then use ggplot2 for the actual plotting. We'll take advantage of the pdf() function and put a different plot on each page.

我们将利用两个包:plyr和ggplot2。我们将使用plyr将数据分割成适当的组,然后使用ggplot2进行实际的绘图。我们将利用pdf()函数,在每个页面上放置不同的图。

library(ggplot2)
library(psych)    #For copying in data, not needed beyond that.

df <- read.clipboard(header = F)

pdf("test.pdf")
    d_ply(df, "V1", function(x)     #Split on the first column
        print(qplot(x$V3))          #Your plotting command should go here. This plots histograms.
    )
dev.off()                           #Close the plotting device.

This will generate an n page PDF where n represents the number of groups in V1 (your splitting column). If you'd rather have JPEG outputs, look at ?jpeg or the other graphics options for making other outputs.

这将生成一个n页的PDF,其中n表示V1(您的分裂列)中的组数。如果您希望有JPEG输出,请查看? JPEG或用于制作其他输出的其他图形选项。

EDIT: As you can see, people interpreted your question in a few ways. If @Roman's solution is more what you want, here's roughly the same ggplot code

编辑:正如你所看到的,人们用几种方式来解释你的问题。如果@Roman的解决方案更符合您的需要,这里有大致相同的ggplot代码

qplot(col2, col3, data = fdt, geom = "point") + facet_wrap(~ col1 , nrow = 2)

推荐阅读
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • WinMain 函数详解及示例
    本文详细介绍了 WinMain 函数的参数及其用途,并提供了一个具体的示例代码来解析 WinMain 函数的实现。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
  • 在分析Android的Audio系统时,我们对mpAudioPolicy->get_input进行了详细探讨,发现其背后涉及的机制相当复杂。本文将详细介绍这一过程及其背后的实现细节。 ... [详细]
  • importpymysql#一、直接连接mysql数据库'''coonpymysql.connect(host'192.168.*.*',u ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
author-avatar
轻点指尖划过秋天的一抹痕8023意
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有