在R中将多个数据集中的数据显示为相同的比例

时间:2013-12-04 12:25:30

标签: r

在read.csv

读入时,我有一个看起来像这样的表
       Count     Rate Thread1 Thread2 Thread3 Thread4 Thread5 Thread6 Thread7
1         672981   38      41      NA      NA      NA      NA      NA      NA
2        3617775   36      35      NA      NA      NA      NA      NA      NA
3        7129723   37      37      NA      NA      NA      NA      NA      NA
4       11072753   37      37      NA      NA      NA      NA      NA      NA
5       11256983   16      16      NA      NA      NA      NA      NA      NA
6       12264060   33      35      NA      NA      NA      NA      NA      NA
7       19821098   38      37      NA      NA      NA      NA      NA      NA
8       30912578   38      38      NA      NA      NA      NA      NA      NA
9       34943731   38      38      NA      NA      NA      NA      NA      NA
10      40564202   38      38      NA      NA      NA      NA      NA      NA
11      43784730   37      37      NA      NA      NA      NA      NA      NA
12      48346827   38      38      NA      NA      NA      NA      NA      NA
13      49575847   34      34      NA      NA      NA      NA      NA      NA
14      51078640   35      35      NA      NA      NA      NA      NA      NA
15      54806421   38      38      NA      NA      NA      NA      NA      NA
16      54951989   34      34       0      NA      NA      NA      NA      NA
17      55086821   29      14      14      NA      NA      NA      NA      NA
18      55187564   39      19      19      NA      NA      NA      NA      NA

(等等......随着数据的建立,其他线程进入)

请问这样一个基本问题的道歉,但我想以相同的比例显示每个系列的数据(即x = Count,y = Rate)。我该怎么做?

如果我试试这个:

> plot(Rate ~ Count, type="l", pch=20, col=2)
> par(new=T)
> plot(faultrate$Thread1~Count, type="l", pch=20, col=7, axes=F)

x刻度匹配,但y刻度不匹配

3 个答案:

答案 0 :(得分:1)

ylim = c(whatever, whatever)

答案 1 :(得分:1)

如果您希望在同一图表中针对“计数”绘制多个“评分”和“主题”列,您可以查看matplot

# Select first column (Count) as x variable, and all colums _except_ x as y variable. 

# basic, default matplot
matplot(x = df[ , 1], y = df[ , -1] , type = "l")

# slightly customized matplot
# create a vector of numbers, one for each response variable
# numbers are mapped to colours in plot and legend
cols = seq_len( ncol(df)-1 )

matplot(x = df[, 1], y = df[ , -1] ,
        type = "l",
        lty = 1,
        col = cols)

legend("bottom", 
       legend = names(df[ , -1]), 
       lty = 1,
       col = cols)

或者,重塑您的数据并使用ggplot

library(reshape2)
library(ggplot2)
df2 <- melt(df, id.var = "Count")
ggplot(data = df2, aes(x = Count, y = value, colour = variable)) +
  geom_line()

答案 2 :(得分:0)

与@ user1317221_G建议一样,您可以手动调整ylim参数。但是,我发现这种情节更容易ggplot2 dat。你需要采取这样的方法(我假设你的数据在library(reshape2) library(ggplot2) dat_melt = melt(dat, id.vars = 'Count') ggplot(dat_melt, aes(x = Count, y = value, color = variable)) + geom_line() data.frame中):

Rate

这将使用不同的颜色在每个Thread / ggplot2的绘图中绘制一条线,使用相同的x和y限制。 Rate为您执行此操作,无需手动设置。如果您想根据Thread / facet_wrap创建一个地块,而不是一个带有直线的地图,请查看{{1}}。