我想获得与变量中的因子/值一样多的图。
例如,我想绘制以下变量(v1,v2,v3,v4,v5,v6,v7,v8),我已将其定义为变量country上所有可能值的比例。在这种情况下,总共有三个不同的情节。
我知道如何单独绘制它,例如在这种情况下我会使用以下内容:
basicgraph(Data[country==1, scale1] )
basicgraph(Data[country==2, scale1] )
basicgraph(Data[country==3, scale1] )
我希望我的函数能够绘制与因子/值一样多的图形(不指定因子/值的数量)。我试过"申请"但我无法真正发挥作用,所以任何线索对我都有好处。
我有一个看起来像的数据集:
v1 v2 v3 v4 v5 v6 v7 v8 country
1 NA NA NA NA NA NA NA NA 1
2 5 5 5 5 5 4 5 5 2
3 4 5 3 5 4 5 5 5 3
4 5 5 5 4 2 4 4 5 1
5 4 3 5 4 4 5 4 5 2
6 5 5 5 2 3 4 3 5 3
7 NA NA NA NA NA NA NA NA 1
8 3 5 5 5 4 5 4 4 2
9 4 5 5 4 5 5 4 5 3
10 2 4 4 5 4 5 4 5 1
11 4 5 5 3 4 4 4 5 2
12 4 5 4 4 5 4 4 5 3
13 5 5 4 3 3 5 5 5 1
14 3 5 1 2 3 1 4 5 2
我已将比例定义为:
scale1 <- names(Data) %in% c( "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8")
我已经通过以下方式定义了一个情节函数:
basicgraph<-function(df, title, lab)
{
for(i in 1:length(df))
{
y <- melt(df)
z <- with(y, as.data.frame(table(variable, value, exclude = NULL)))
z <- z[!is.na(z$variable), ]
z$scale <- z$variable
levelss<-levels(z$variable)
}
theme_nogrid <- function (base_size = 12, base_family = "")
{
theme_bw(base_size = base_size, base_family = base_family) %+replace%
theme(panel.grid = element_blank()) +
theme(axis.text.x =element_text(size = base_size * 0.8 , lineheight = 0.9,
vjust = 0.5, hjust=1, angle=90))
}
plot1<-function(z) {
ggplot(data = z, aes(x = variable, y = value, size = Freq))+
geom_point(aes(size = Freq, stat = "identity", position = "identity"), shape = 20, color="black", alpha=0.6) +
scale_size_continuous(range = c(3,15)) +
scale_x_discrete(breaks=levelss,labels=lab)+
xlab("")+ #Afegir/canviar títol eix x
ylab("Response")+ #Afegir/canviar títol eix y
ggtitle(title)+ #Títol a dalt
theme_nogrid()
}
}
答案 0 :(得分:0)
这是一个非常令人困惑的问题和例子。我想你想为每个country
值生成不同的图表吗?在这种情况下,我建议这样的事情:
library(reshape2)
Data_m <- melt(Data, id.vars="country") # melt the data into 'long' format
f <- function(d) { # function that produces a graph and waits
print(qplot(variable, value, data=d) + ggtitle(unique(d$country)))
readline()
}
library(plyr)
d_ply(Data_m, .(country), f) # produces three separate graphs
d_ply调用将Data_m
拆分为三个部分,并在每个部分重复调用f
,生成该数据子集的图形,而不知道所绘制数据的任何信息。