如何解决如何在R中使用Plotly制作3D直方图?
library(plotly)
fig1 <- plot_ly(data=DATA,x=~X,name="X",type="histogram",histnorm="probability")
fig2 <- plot_ly(data=DATA,x=~Y,name="Y",histnorm="probability")
subplot(fig1,fig2)
假设我有一个数据集DATA
,并且已经为变量X
和Y
绘制了2D直方图。现在,我要绘制X
和Y
的 3D直方图。有人知道怎么做吗?使用R进行Plotly的描述包括创建3D直方图,但是在3D Charts或Histograms下都找不到该教程。下面的疯狂猜测给了我一个旋转的2D直方图。
fig <- plot_ly(data=DATA,y=~Y,histnorm="probability"
) %>%
layout(scene=list(xaxis=list(title="X",zeroline=TRUE),yaxis=list(title="Y",zaxis=list(title="Frequency",zeroline=TRUE)
)
)
fig
解决方法
下面您可以找到一些使用plotly
绘制3D直方图的初步想法。
请查看此link,以了解add_3Dbar
函数的工作原理。
# The matrix with frequencies from a 3 x 4 cross table
z_mtx <- cbind(c(2,4,6,5),c(1,5,9,6),c(2,2,3))
# Define a function to add 3D bars
add_3Dbar <- function(p,x,y,z,width=0.4) {
w <- width
add_trace(p,type="mesh3d",x = c(x-w,x-w,x+w,x+w),y = c(y-w,y+w,y-w,y-w),z = c(0,z),i = c(7,3,7),j = c(3,1,2),k = c(0,7,facecolor = rep(toRGB(viridisLite::inferno(6)),each = 2))
}
# Draw the 3D histogram
fig <- plot_ly()
for (k1 in 1:nrow(z_mtx)) {
for (k2 in 1:ncol(z_mtx)) {
fig <- fig %>% add_3Dbar(k1,k2,z_mtx[k1,k2])
}
}
fig
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。