我有一個看起來像這樣的資料框 -
df = data.frame(recall=c(0.55,0.62,0.43,0.61,0.19,0.14,0,0.19,0.33,0.33,0,0.33),
type= c("Phone numbers","Phone numbers","Phone numbers","Phone numbers","Emails","Emails","Emails","Emails","URLs","URLs","URLs","URLs"),
model=c("Cognition","TS-SAR","TS-ABINet","TS-RobustScanner",
"Cognition","TS-SAR","TS-ABINet","TS-RobustScanner",
"Cognition","TS-SAR","TS-ABINet","TS-RobustScanner"),
lb=c(0.47,0.55,0.35,0.53,
0.07,0.04,0,0.07,
0.14,0.14,0,0.14),
ub=c(0.63,0.7,0.51,0.69,
0.30,0.24,0,0.3,
0.52,0.52,0,0.52))
它由 4 個“影像中的文本檢測”ML 模型的結果組成。該recall列具有每個模型的召回指標值,基于type檢測到的文本(電話號碼、電子郵件或 URL)。和列具有 95% 置信區間的召回率下限和邊界值ub。lb
客觀的
我想使用 R 將其繪制在一張圖中。
這是我嘗試使用ggplot2
pd <- position_dodge(width=0.2)
ggplot(df, aes(model,recall, color=type))
geom_point(aes(shape=type),size=4, position=pd)
scale_color_manual(name="Type",values=c("coral","steelblue"))
scale_shape_manual(name="Type",values=c(17,19))
theme_bw()
scale_x_continuous("Model", breaks=1:length(model), labels=model)
scale_y_continuous("Recall values")
geom_errorbar(aes(ymin=lb,ymax=ub),width=0.1,position=pd)
但是,這給了我一條錯誤訊息
check_breaks_labels(中斷,標簽)中的錯誤:找不到物件“模型”
任何想法為什么這可能是一個錯誤?如果有人有建議,我也愿意接受繪制這些資料的新方法。謝謝!
uj5u.com熱心網友回復:
您的代碼需要進行一些調整。
首先,ggplot只使用非標準評估 inside aes,因此使用modelinsidescale_x_continuous會導致“model未找到”錯誤。
其次,x 軸不連續。它是離散的。如果您根本不指定 x 軸刻度,則中斷/標簽將是正確的。你可以把這條線拿出來并相信默認值。
第三,type變數具有三個級別,因此您需要顏色和形狀刻度中的三個值。
把這些放在一起,我們有:
position <- position_dodge(width = 0.2)
ggplot(df, aes(model, recall, color = type))
geom_point(aes(shape = type), size = 4, position = pd)
geom_errorbar(aes(ymin = lb, ymax = ub), width = 0.1, position = pd)
scale_color_manual("Type", values = c("coral", "steelblue", "green4"))
scale_shape_manual("Type", values = c(17, 19, 18))
scale_y_continuous("Recall values")
theme_bw(base_size = 16)

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/480658.html
