我知道这听起来很基础,但我已经花了一个多小时的时间搜索了,但是没有成功。我只是想在'R'中使用'ggplot2'包绘制一个3D条形图。我的数据框看起来像这样:
x y z
t1 5 high
t1 2 low
t1 4 med
t2 8 high
t2 1 low
t2 3 med
t3 50 high
t3 12 med
t3 35 low
我想在它上面绘制类似于这样的图表:
非常感谢任何帮助!
如评论中所述,当有其他选项可用时,3D图通常不是一个好选择,因为它们往往会给数据提供扭曲/模糊的视图。
话虽如此,以下是您可以使用 latticeExtra
绘制所需数据的方法:
d <- read.table(text=' x y z
t1 5 high
t1 2 low
t1 4 med
t2 8 high
t2 1 low
t2 3 med
t3 50 high
t3 12 med
t3 35 low', header=TRUE)
library(latticeExtra)
cloud(y~x+z, d, panel.3d.cloud=panel.3dbars, col.facet='grey',
xbase=0.4, ybase=0.4, scales=list(arrows=FALSE, col=1),
par.settings = list(axis.line = list(col = "transparent")))
z
的级别排序不正确。在创建因子时,您可以通过明确指定级别顺序来进行更正。 - jbaumsy
相对于x
和z
(其中这些是数据d
的元素)的图表。 - jbaums{rayshader}包是另一个允许进行3D可视化的包 - 根据作者所说,它只能对确实具有三个维度的数据进行3D可视化。这里基于瓷砖图。
NB:下面需要我安装当前GitHub版本的rayshader(v.0.33.3)和rgl(v.1.0.0)包。
# devtools::install_github("tylermorganwall/rayshader") ## NB this will install a lot of dependencies
library(rayshader)
library(ggplot2)
d <- read.table(text=' x y z
t1 5 high
t1 2 low
t1 4 med
t2 8 high
t2 1 low
t2 3 med
t3 50 high
t3 12 med
t3 35 low', header=TRUE)
p <- ggplot(d, aes(x, z, fill = y)) +
geom_tile() +
scale_fill_fermenter(type = "div", palette = "RdYlBu")
plot_gg(p)
render_movie(filename = "plot.gif")
geom_bar()
。 - Taviggplot2
制作 3D 条形图。就像在我们的宇宙中超越光速一样,有些事情只是受到 Hadleyverse 基本法则的限制。无论如何,按颜色分组的线形图将更具信息量。例如,对于你上面列出的数据,请尝试使用以下代码(其中我已经命名了数据框为 dat):ggplot(dat, aes(x, y, group=z, colour=z)) + geom_line() + geom_point()
。 - eipi10ggplot
吗?如果不是,请查看?latticeExtra::panel.3dbars
中的示例。 - jbaums