我對使用ggplot2
在同一圖表中繪製點和線條有疑問。下面提供了用於產生模擬數據的代碼:在ggplot2中添加具有自定義圖例的點和線圖層
library(ggplot2)
set.seed(111)
x = seq(1,10,length=10)
y1 = rnorm(10, 0, 0.1)
y2 = rnorm(10, 5, 0.1)
y3 = rnorm(10, 10, 0.3)
y4 = rnorm(10, 20, 0.4)
label = c(rep("Cat",10), rep("Dog", 10), rep("Owl", 10), rep("Eagle", 10))
dat1 = data.frame(cbind(x, y=y1))
dat2 = data.frame(cbind(x, y=y2))
dat3 = data.frame(cbind(x, y=y3))
dat4 = data.frame(cbind(x, y=y4))
dat = data.frame(rbind(dat1, dat2, dat3, dat4))
dat = cbind(dat, label)
dat
我使用以下代碼來生成的情節:
ggplot(dat, aes(x=x, y=y, colour=label)) +
geom_line(data=dat[dat$label=="Cat", ], aes(x=x, y=y, linetype=label)) +
geom_line(data=dat[dat$label=="Dog", ], aes(x=x, y=y, linetype=label)) +
geom_point(data=dat[dat$label=="Owl", ], aes(x=x, y=y, colour=label)) +
geom_point(data=dat[dat$label=="Eagle", ], aes(x=x, y=y, colour=label)) +
scale_color_manual("Animal",
values = c("Cat" = "darkgreen",
"Dog" = "blue",
"Owl" = "red",
"Eagle" = "cyan")) +
theme_bw() +
scale_linetype_manual(values=c(1,2)) +
scale_alpha_manual(values=c(0.8, 0.8, 0.2, 0.2)) +
scale_size_manual(values=c(1.8, 1.8, 0.6, 0.6)) +
theme(legend.key=element_blank(),
legend.key.width = unit(3, "line"),
legend.key = element_blank())
電流積輸出看起來像這樣:
的以下幾點需要更改以獲得我想要的圖:
- 刪除「標籤」圖例,只顯示「動物」圖例
- 「Cat」和「Dog」圖例只顯示點,而不顯示線;對於「貓頭鷹」和 「鷹」的傳說,只顯示線條,沒有點
- 傳說線路類型應該匹配在情節
- 傳說應該是相同的順序,因爲我指定標籤的順序:貓,狗,貓頭鷹和鷹
- 我希望線是ticker(例如寬度= 2),並且點更透明(例如alpha = 0.4)
傳說位置是在圖,不在外面
我感謝您的幫助/建議。謝謝!
非常感謝!這正是我想要的:) – alittleboy 2014-10-05 15:35:34
對不起,我還有一個問題:有沒有辦法隱藏「鷹」的傳說?我只想顯示其他三個變量的傳說,但在圖中,應該顯示所有四個變量。謝謝! – alittleboy 2014-10-05 19:28:21
爲所有三個'scale _...'函數添加參數'breaks = c(「Cat」,「Dog」,「Owl」)' – 2014-10-06 04:43:33