我正在使用类似的数据集:

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

对于上述数据,我需要在第三列的第3列中的r绘图,将有10个不同的图(每个组1-10)的第3列值的(每个组1-10)。 X轴是迭代的数量,Y轴是具有最大63000的值。我还需要将点与颜色红色的线连接。我是R的新手,并且一直在阅读文档,但这让我更加困惑。任何身体都可以帮助吗?

编辑:我实际上想要V3值的线图。 V3列的行数将在Y轴上的X轴和V3值上。我想要V1指示的组的各个图。 Chase的解决方案起作用,除了我希望轴移动,V3值应在Y轴上。 alt text

edit2:@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)

这是我遇到的错误,

    > 
>  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

我没有任何情节?我想念什么好的,我知道了。不知道怎么了。这里是,

alt text

另外2件事,如何将框上的V1标签更改为1,2之类的实际数字,...其次,我有一个包含100组的文件,我尝试了一个,它在一个页面上制作了所有图形(显然不可读),可以我在多个窗户上制作这些?

有帮助吗?

解决方案

好吧,首先,您需要为第一个变量的每个子集创建一个带有行号的变量。这是通过将数据设置为第一个变量的一种方法,使一个具有行号和重组的新变量。

您可能还希望V1成为一个因素(一个分类变量)。

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

然后使用 lattice 图书馆,您会做类似的事情

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

要使图出现在多个页面上,请使用 layout 选项。您需要将绘图保存到支持多页输出的文件中。例如,对于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()

另外,要在使用代码运行代码时出现图 source, ,您需要专门绘制xyplot命令的输出,例如

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

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

其他提示

就像蔡斯说的那样,请澄清您的问题,以便我们可以更好地设想您要实现的目标。为了加入混乱,这是一个 lattice 球场解决我认为您可能追求的一切。

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

我并不完全遵循您要绘制的内容,但这是一种方法,应该使您的道路走上正确的道路,您可以填写适当的绘图命令...或澄清您的问题并说明您的问题的最终结果您的情节应该更详细。

我们将利用两个包裹: plyrggplot2. 。我们将使用 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.

这将产生一个 n 页面pdf在哪里 n 表示V1中的组数(您的分裂列)。如果您想拥有JPEG输出,请查看“ JPEG”或其他用于制作其他输出的图形选项。

编辑:如您所见,人们以几种方式解释了您的问题。如果 @roman的解决方案更多您想要的,则大致相同的GGPLOT代码

qplot(col2, col3, data = fdt, geom = "point") + facet_wrap(~ col1 , nrow = 2)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top