Tôi đã viết đoạn mã sau:ggplot2 geom_line() nên chỉ theo giá trị cụ thể
library(ggplot2)
data <- structure(list(x = c(1L, 6L, 3L, 4L, 2L, 3L, 6L, 1L, 5L, 2L,
1L, 5L), y = c(1L, 7L, 5L, 6L, 3L, 4L, 6L, 2L, 5L, 6L, 5L, 2L
), year = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
2L, 2L), .Label = c("2010", "2011"), class = "factor"), matching = structure(c(1L,
2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L), .Label = c("person1",
"person2", "person3", "person4", "person5", "person6"), class = "factor")), .Names = c("x",
"y", "year", "matching"), row.names = c(NA, -12L), class = "data.frame")
data$year <- factor(data$year)
colors <- c("#4cb5ee", "#a0d099", "red")
p <- ggplot(data, aes(x=x, y=y)) +
geom_point(aes(colour=year), shape=16, size=6) +
geom_line(aes(group=matching), arrow=arrow(length=unit(0.15,"cm")), colour="black", size=1) +
xlab("x") + ylab("y") +
scale_colour_manual("year", values=colors) +
scale_x_continuous(limits=c(1,7), breaks=seq(1,7, by=1)) +
scale_y_continuous(limits=c(1,7), breaks=seq(1,7, by=1))
print(p)
Nó cung cấp cho đầu ra sau đây:
Nhưng những gì tôi muốn geom_line() để làm là: luôn luôn trỏ vào điểm mà năm = 2011. Tôi không thể tìm ra lý do tại sao mũi tên của dòng là điểm đôi khi tại một điểm đề cập đến năm = 2010 và đôi khi điểm tại một điểm mà năm = 2011.
gì tôi phát hiện ra là mũi tên phải mất vài đối số:
arrow(angle = 30, length = unit(0.25, "inches"), ends = "last", type = "open")
Vì vậy mà tôi có thể nói ends="first"
. Nhưng tôi không thể khái quát rằng ends
luôn là first
hoặc luôn luôn last
.
Tôi đã cố gắng thêm cột vào data.frame của tôi có thông tin nếu mũi tên phải kết thúc trước hoặc cuối, nhưng nó không cho tôi kết quả tôi muốn.
Mọi trợ giúp đều được đánh giá cao :-)
Cảm ơn bạn trước!
Đây là một giải pháp tốt hơn. Cách tiếp cận tôi đặt ra có thể cung cấp một số tính linh hoạt cho các tình huống phức tạp hơn, nhưng điều này phù hợp hơn cho nhiệm vụ trong tầm tay. – Chase
Đánh tôi với nó. Tôi cho rằng tôi cần phải hài lòng rằng tôi (một người dùng không ggplot) đã ghép nó lại với nhau từ sự trợ giúp trực tuyến. –
Cảm ơn giải pháp của bạn, nó thực sự dễ dàng ;-) –