gpt4 book ai didi

r - 将宽图像包装成几行

转载 作者:行者123 更新时间:2023-12-04 20:14:23 27 4
gpt4 key购买 nike

我正在制作一个相当广泛的图像,列出目标练习的连续培训类(class)。

enter image description here

目前,这不是很有用的图形,我需要将图像包装成几行,以使每个训练集的数据更加可见。到目前为止,我一直通过引入第二个变量来管理它,该变量表示训练集所属的行。缺点是现在我在每一行上方都有一个 strip ,几乎没有任何作用。

enter image description here

另一种方法是将每一行生成为一个单独的图形并使用 gridExtra 合并它们。的 grid.arrange .

我正在寻找将宽图形包装到多行的其他(优雅)方法。如果可能的话,我希望每个面上方都没有 strip 。欢迎所有建议。

这是我用来生成这些图像的代码。

library(ggplot2)
library(reshape2)

st <- 23 # number of training sets
sk <- 10 # number of shots per training set
dt <- sample(7:10, size = st * sk, prob = c(0.005, 0.15, 0.195, 0.65), replace = TRUE)
rslt <- as.data.frame(matrix(dt, nrow = 10))
names(rslt) <- paste("trening", seq_len(ncol(rslt)), sep = "")

rsltm <- melt(rslt, variable.name = "trening", value.name = "rezultat")
rsltm$trening <- ordered(rsltm$trening)

n <- 5 # number of trainings per row
st.vrst <- round(st/n)
vrsta <- paste("vrsta", seq_len(st.vrst), sep = "")

rsltm$vrsta <- rep(vrsta, each = sk * n, length.out = nrow(rsltm))
rm(vrsta)

# wide figure
ggplot(rsltm, aes(x = trening, y = rezultat)) +
geom_dotplot(binaxis = "y", stackdir = "center", show_guide = FALSE) +
scale_fill_manual(values = rep("red", st)) +
theme_bw()

# wrapped figure
ggplot(rsltm, aes(x = trening, y = rezultat, fill = trening)) +
geom_dotplot(binaxis = "y", stackdir = "center", show_guide = FALSE) +
scale_fill_manual(values = rep("red", st)) +
facet_wrap(~vrsta, nrow = st.vrst, scales = "free_x") +
theme_bw()

最佳答案

要删除小图上方的条状文本,您可以设置 elemnt_blank()对于那些元素。

# wrapped figure
ggplot(rsltm, aes(x = trening, y = rezultat, fill = trening)) +
geom_dotplot(binaxis = "y", stackdir = "center", show_guide = FALSE) +
scale_fill_manual(values = rep("red", st)) +
facet_wrap(~vrsta, nrow = st.vrst, scales = "free_x") +
theme_bw() + theme(strip.text=element_blank(),
strip.background=element_blank())

编辑 - 更新生成的情节

改善情节的一种方法可能是放置 trening绘图区域内的标签。

为此,新数据框 df.names制作。行数对应于 trening的级别.
df.names<-data.frame(lab.nam=unique(rsltm$trening), #labels
x=rep(1:5, times = 5, length.out = 23), #x coordinate (1:5)
y=rep(11,23), #y coordinate (11)
vrsta=rep(vrsta, each = 5, length.out = 23)) #vrsta values to ensure position in facets

生成没有 x 轴标签的绘图的代码。 panel.margin=确保刻面之间的空间更小。
p <- ggplot(rsltm, aes(x = trening, y = rezultat)) + 
geom_dotplot(binaxis = "y", stackdir = "center", show_guide = FALSE) +
scale_fill_manual(values = rep("red", st)) +
facet_wrap(~vrsta, nrow = st.vrst, scales = "free_x") +
theme_bw() + theme(strip.text=element_blank(),
strip.background=element_blank(),
panel.margin = unit(-0.6, "lines"),
panel.grid.minor=element_blank()) +
scale_y_continuous(limits=c(7.5,11.5),breaks=c(8,9,10)) +
scale_x_discrete(breaks=NULL)

geom_text()将标签放在点上方。
p +  geom_text(data=df.names,aes(x, y, label=lab.nam),size=4)

enter image description here

关于r - 将宽图像包装成几行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14158742/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com