Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:如何从data.frame中提取数据来绘制透视图?_R_Plot - Fatal编程技术网

R:如何从data.frame中提取数据来绘制透视图?

R:如何从data.frame中提取数据来绘制透视图?,r,plot,R,Plot,我是R的初学者。我想绘制数据帧中不同列之间的数字关系 目前我有以下数据框: topN Precision Recall F1Score udim idim tdim 10 50 0.02712121 0.2843955 0.04951998 67 78 50 40 50 0.02515152 0.2584113 0.04584124 67 156 50 70 50 0.02539924 0.2585877 0.04625516 6

我是R的初学者。我想绘制数据帧中不同列之间的数字关系

目前我有以下数据框:

    topN  Precision    Recall    F1Score udim idim tdim
10    50 0.02712121 0.2843955 0.04951998   67   78   50
40    50 0.02515152 0.2584113 0.04584124   67  156   50
70    50 0.02539924 0.2585877 0.04625516   67  234   50
100   50 0.02608365 0.2735997 0.04762680  133   78   50
130   50 0.02431818 0.2504262 0.04433146  133  156   50
160   50 0.02425856 0.2448997 0.04414439  133  234   50
190   50 0.02418251 0.2498824 0.04409746  200   78   50
220   50 0.02342205 0.2436125 0.04273533  200  156   50
250   50 0.02136882 0.2179636 0.03892181  200  234   50
我想绘制udim、idim和F1Score之间的3D关系。我在R中使用persp()函数。我想确定在z上使用t()是否正确。

所以

x是udim:67 133 200

y为idim:78 156 234

z是数据框中对应的分数值

我使用以下代码:

plot.data <- read.table(plot.file, sep=",", header=T) 
# plot.file is the data frame file location

udim <- as.factor(plot.data$udim)
u <-as.integer(levels(udim))

idim <- as.factor(plot.data$idim)
i <- as.integer(levels(idim))

t <- as.integer(levels(as.factor(plot.data$tdim)))

z <- outer(u, i, FUN = function(u, i){
  ss <- subset(plot.data, tdim == 50 & topN == 50) #udim == u & idim == i &
  ss$F1Score
})

persp(u, i, t(z), theta=45, phi=45, shade = 0.45, xlab="user dim", 
      ylab="item dim", zlab="F1 Score", scale=TRUE)

plot.data您的图表已经很好看了,我无法回答您的第二个问题

但是,我想为您介绍另一个用于3向图的选项。 虽然它们通常很混乱,但我发现了一种利用3D散点图的吸引人的方法。 使用
scatterplot3d
animation
以及一些第三方软件,如
ImageMagick(http://imagemagick.org)
您可以创建3D散点图的动画图片,这当然是使用计算机进行数据显示的一个选项

数据示例(我现在没有安装
动画
软件包,因此只能提供绘图语法):

库(scatterplot3d)

谢谢,这很有帮助。对于角度变化,这似乎是一个更好的选择:)通常避免3D散点图,但对于循环,它也是在有新数据时快速检查三向数据的一个好工具。
 library(scatterplot3d)

 F1Score <- c(0.04951998,0.04584124,0.04625516,0.04762680,0.04433146,0.04414439,0.04409746,0.04273533,0.03892181)
 udim <- c(67,67,67,133,133,133,200,200,200)
 idim <- c(78,156,234,78,156,234,78,156,234)

 for (j in seq(5, 175, by = 5)) {
 scatterplot3d(udim, idim, F1Score, angle = j)
 Sys.sleep(0.042) # for 24 fps when looking at it in R
 }