首先,我將模擬我正在使用的資料進行復制。
electrode <- c('Cz','Fz','Pz')
value <- c(2.307785,1.613350,2.925053)
sd <- c(0.7593193,0.7612393,0.7568794)
se <- c(0.002829816,0.002836971,0.002820723)
ci <- c(0.005546431,0.005560455,0.005528609)
tgc <- data.frame(electrode,value,sd,se,ci)
col <- c("#004d8d", "#cc2701", "#e5b400")
stdev <- c(10.783939,10.506721,9.415955)
請參閱我還指定顏色,然后在ggplot.
現在,如果我將添加我想要的陰影的geom_error前面放置geom_rect,它可以正常作業,但它確實在帶有誤差線的點上疊加陰影,正如你Fz在中間看到的那樣。
p1 <- ggplot(tgc, aes(x=factor(electrode), y=value, colour=electrode))
geom_errorbar(aes(ymin=value-sd, ymax=value sd), width=.1, alpha=.5)
geom_rect(inherit.aes = FALSE,mapping =aes(xmin=0, xmax=Inf, ymin=-0.1*min(stdev), ymax=0.1*max(stdev)),fill="grey",alpha = 0.5)
scale_color_manual(values = col, breaks = c("Fz", "Cz", "Pz"))
scale_fill_manual(values = col, breaks = c("Fz", "Cz", "Pz"))
labs(title="Difference at max. discrepancy", x="Electrode", y="Signal (μV)")
lims(y = c(-10, 10))
theme_linedraw()
geom_point()
p1

我要做的是更改圖層順序,為此,我將位置geom_rect與geom_errorbar.
p1 <- ggplot(tgc, aes(x=factor(electrode), y=value, colour=electrode))
geom_rect(inherit.aes = FALSE,mapping =aes(xmin=0, xmax=Inf, ymin=-0.1*min(stdev), ymax=0.1*max(stdev)),fill="grey",alpha = 0.5)
geom_errorbar(aes(ymin=value-sd, ymax=value sd), width=.1, alpha=.5)
scale_color_manual(values = col, breaks = c("Fz", "Cz", "Pz"))
scale_fill_manual(values = col, breaks = c("Fz", "Cz", "Pz"))
labs(title="Difference at max. discrepancy", x="Electrode", y="Signal (μV)")
lims(y = c(-10, 10))
theme_linedraw()
geom_point()
p1
我收到以下錯誤訊息,它沒有繪制新圖。
Error: Discrete value supplied to continuous scale
而且我真的不明白為什么會發生這種情況,事實上,我指定了 fill in geom_rect。
任何想法我做錯了什么?提前致謝!
uj5u.com熱心網友回復:
問題是,通過切換順序,一個連續的 x 刻度被“添加”到您的繪圖中geom_rect,當添加 時geom_errorbar會引發錯誤,因為您將分類變數映射到x. 相反,反之亦然,即我們可以在離散的尺度上映射一個連續值。
scale_x_discrete解決方法是通過在之前添加 a 來顯式設定離散 x 比例geom_rect:
library(ggplot2)
ggplot(tgc, aes(x = factor(electrode), y = value, colour = electrode))
scale_x_discrete()
geom_rect(inherit.aes = FALSE, mapping = aes(xmin = 0, xmax = Inf, ymin = -0.1 * min(stdev), ymax = 0.1 * max(stdev)), fill = "grey", alpha = 0.5)
geom_errorbar(aes(ymin = value - sd, ymax = value sd), width = .1, alpha = .5)
scale_color_manual(values = col, breaks = c("Fz", "Cz", "Pz"))
scale_fill_manual(values = col, breaks = c("Fz", "Cz", "Pz"))
labs(title = "Difference at max. discrepancy", x = "Electrode", y = "Signal (μV)")
lims(y = c(-10, 10))
theme_linedraw()
geom_point()

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/533305.html
標籤:rggplot2
