Matlab:绘制 3D 直方图

Matlab: plotting 3D Histogram

我有一个具有以下结构的 CSV 文件:

userID, movieID, rating

12,1,3 
13,1,3 
16,1,5 
18,1,5 
20,1,5 
22,1,5 
29,1,5 
54,1,3 
55,1,4 
57,1,4 
58,1,5 
63,1,5 
72,1,4 
73,1,5 
75,1,4 
78,1,3 
79,1,5 
82,1,4 
84,1,5 
96,1,4 
97,1,5 

这是我简陋的代码:

TrainingData = load('ratings.csv'); 
Z = TrainingData(1:5,:);
figure
bar3(Z)
title('Detached Style')

我想绘制至少 10 行,包括用户、电影和评分。

情节看起来像这样:

例如,我想要用户在 y 轴上,电影在 x 轴上,评分在 z 轴上。

你能给我一个提示吗?

这是我的实现:

library(plot3D)
data <- read.csv('data.csv')

x = c(seq(1, dim(data)[1], by=1))
y = c(seq(1, dim(data)[2], by=1))

zval = c(paste(unlist(t(data)), collapse=","))
zval = as.integer(as.list(strsplit(zval, ","))[[1]])
z = matrix(zval, nrow= dim(data)[1], ncol= dim(data)[2], byrow=TRUE)

hist3D(x,y,z, zlim=c(1,100), theta=120, phi=40, axes=TRUE,label=TRUE, nticks=5, ticktype="detailed", space=0.4, lighting=TRUE, light="diffuse", shade=0.5)

上述代码中,x-axis表示数据中的行,y-axis表示数据中的列,z-axis表示对应的值。 最左边的列是数据中的第一列,然后是中间的列,然后是最右边的列。

输出图像:

总有改进的余地,但这肯定会让您了解如何做到这一点。

希望对您有所帮助。