Tôi có tập dữ liệu, trong đó mỗi điểm dữ liệu có giá trị x bị hạn chế (đại diện cho một phiên bản thực tế của biến định lượng) là tùy ý (tồn tại chỉ đơn giản là cung cấp thứ nguyên để trải rộng văn bản) và nhãn. Bộ dữ liệu của tôi có thể rất lớn và thường có chồng chéo văn bản, ngay cả khi tôi cố gắng trải rộng dữ liệu trên trục y càng nhiều càng tốt.ggrepel: Chỉ định lại văn bản theo một hướng và trả về giá trị của văn bản bị đẩy lùi
Do đó, tôi đang cố gắng sử dụng ggrepel mới. Tuy nhiên, tôi đang cố gắng giữ cho các nhãn văn bản bị hạn chế ở vị trí x-value của chúng, trong khi chỉ cho phép chúng đẩy lùi nhau theo hướng y. Ví dụ, mã dưới đây tạo ra một âm mưu cho 32 điểm dữ liệu, trong đó các giá trị x hiển thị số lượng xi lanh trong ô tô và các giá trị y được xác định ngẫu nhiên (không có ý nghĩa nhưng để cung cấp một giây kích thước cho mục đích vẽ bản đồ). Mà không sử dụng ggrepel, có sự chồng chéo đáng kể trong văn bản:
library(ggrepel)
library(ggplot2)
set.seed(1)
data = data.frame(x=runif(100, 1, 10),y=runif(100, 1, 10),label=paste0("label",seq(1:100)))
origPlot <- ggplot(data) +
geom_point(aes(x, y), color = 'red') +
geom_text(aes(x, y, label = label)) +
theme_classic(base_size = 16)
tôi có thể khắc phục sự chồng chéo văn bản sử dụng ggrepel, như hình dưới đây. Tuy nhiên, điều này không chỉ thay đổi giá trị y, mà còn thay đổi giá trị x. Tôi cố gắng để tránh thay đổi x giá trị, vì họ đại diện cho một ý nghĩa vật lý thực tế (số lượng xi lanh):
repelPlot <- ggplot(data) +
geom_point(aes(x, y), color = 'red') +
geom_text_repel(aes(x, y, label = label)) +
theme_classic(base_size = 16)
Là một lưu ý, lý do tôi không thể cho phép x-giá trị của văn bản cần thay đổi là vì tôi chỉ vẽ văn bản (không phải là điểm). Trong khi đó, có vẻ như hầu hết các ví dụ trong ggrepel giữ vị trí của các điểm (để giá trị của chúng vẫn đúng), và chỉ đẩy lùi các giá trị x và y của các nhãn. Sau đó, các điểm và kết nối với các nhãn với các phân đoạn (bạn có thể thấy rằng trong ví dụ cốt truyện thứ hai của tôi).
Tôi giữ các điểm trong hai ví dụ trên cho mục đích minh họa. Tuy nhiên, tôi chỉ giữ lại văn bản (và do đó sẽ được loại bỏ các điểm và các đoạn), để lại tôi với một cái gì đó như thế này:
repelPlot2 <- ggplot(data) + geom_text_repel(aes(x, y, label = label), segment.size = 0) + theme_classic(base_size = 16)
Câu hỏi của tôi là hai lần:
1) Tôi có thể đẩy lùi nhãn văn bản theo hướng y không?
2) Tôi có thể lấy cấu trúc chứa các giá trị y mới (bị đẩy lùi) của văn bản không?
Cảm ơn bạn đã được tư vấn!
Tôi không hiểu cách giải quyết vấn đề này? Cảm ơn bạn. – luckButtered