我一直在使用這段代碼一段時間,但這是我第一次在我的 x 軸上只有兩個類別。出于某種原因,R 不會隔開垃圾箱,而是在開始時將它們捆綁在一起。如何沿 x 軸均勻分布它們?
xlabels<-c("A","B")
CTplot <- ggplot(CTsum, aes(x=Treatment, y=FI))
geom_col(fill="lightsteelblue")
scale_x_discrete(labels= xlabels) xlab("") ylab("")
theme(panel.background = element_blank(),axis.line = element_line(colour = "black"),axis.text.x = element_text(size=20,color="black"), axis.text.y = element_text(size=20, color="black"), axis.title.x = element_text(size=25), axis.title.y = element_text(size=25))
geom_errorbar(aes(ymin = FI - meanse, ymax = FI meanse, width=0.2))
annotate("text",x=1,y=0.84, label="A",size=5)
annotate("text",x=2,y=0.62, label="B",size=5)
annotate("text",x=3,y=0.29, label="",size=5)
annotate("text",x=4,y=0.26, label="",size=5)
annotate("text",x=0.65,y=0.5, label="",size=15)
CTplot
uj5u.com熱心網友回復:
當您在 x 軸上繪制分類資料時,您“實際上”在整數值 x = 1、x = 2 等處繪制,但使用文本標簽代替數字。這就是允許您在 x = 1 和 x = 2 處放置文本注釋的原因。
但是,由于您在右側添加了兩個空文本注釋(在位置 x = 3 和 x = 4),所以這些條在左側成束。情節已經擴大到容納他們。因為無論如何它們都是空的,所以你不需要它們。這是沒有它們的情節:
CTplot <- ggplot(CTsum, aes(Treatment, FI))
geom_col(fill = "lightsteelblue")
geom_errorbar(aes(ymin = FI - meanse, ymax = FI meanse, width = 0.2))
scale_x_discrete(labels = xlabels)
xlab("")
ylab("")
theme(panel.background = element_blank(),
axis.line = element_line(colour = "black"),
axis.text.x = element_text(size=20,color="black"),
axis.text.y = element_text(size=20, color="black"),
axis.title.x = element_text(size=25),
axis.title.y = element_text(size=25))
annotate("text",x=1,y=0.84,label="A",size = 5)
annotate("text",x=2,y=0.62,label="B",size = 5)
CTplot
這里在 x = 4 處有一個空注釋:
CTplot annotate("text",x = 4, y = 0.29, label = "", size = 5)
為了強調這一點,讓我們看一下 x = 20 處的空注釋:
CTplot annotate("text",x = 20, y = 0.29, label = "", size = 5)
如您所見,x 軸必須擴展以適應 x = 20 處的不可見文本注釋。
如果您希望條形更加分散,您可以執行以下操作:
CTplot <- ggplot(CTsum, aes(Treatment, FI))
geom_col(fill = "lightsteelblue", width = 0.6)
geom_errorbar(aes(ymin = FI - meanse, ymax = FI meanse, width = 0.2))
scale_x_discrete(labels = xlabels, expand = c(0.75, 0))
xlab("")
ylab("")
theme(panel.background = element_blank(),
axis.line = element_line(colour = "black"),
axis.text.x = element_text(size=20,color="black"),
axis.text.y = element_text(size=20, color="black"),
axis.title.x = element_text(size=25),
axis.title.y = element_text(size=25))
annotate("text",x=1,y=0.84,label="A",size = 5)
annotate("text",x=2,y=0.62,label="B",size = 5)
CTplot
使用的資料(從 OP 中的影像近似)
CTsum <- data.frame(Treatment = c("A", "B"), FI = c(0.71, 0.48), meanse = 0.1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/491044.html
上一篇:如何洗掉ggplot2中的多余行