2017-06-04 42 views
5

Tôi đang gặp khó khăn trong khi vẽ đồ thị tọa độ song song bằng cách sử dụng ggparcoord từ gói GGally. Vì có hai biến phân loại, những gì tôi muốn hiển thị trong hiển thị giống như hình ảnh bên dưới. Tôi đã tìm thấy rằng trong ggparcoord, groupColumn chỉ được phép một biến duy nhất để nhóm (màu) theo, và chắc chắn tôi có thể sử dụng showPoints để đánh dấu các giá trị trên trục, nhưng tôi cũng cần phải thay đổi hình dạng các điểm đánh dấu này theo các biến phân loại. Có gói nào khác có thể giúp tôi nhận ra ý tưởng của mình không?Cách vẽ tọa độ song song với nhiều biến phân loại trong R

Bất kỳ phản hồi nào sẽ được đánh giá cao! Cảm ơn!

university and country are two categories

+0

gì bạn được đăng là đẹp hơn so với câu trả lời vì nó cho thấy sự phạm vi của mỗi tọa độ thay vì chỉ phạm vi tiêu chuẩn hóa ... – Chris

Trả lời

1

Nó không phải là khó khăn để triển khai song song của riêng bạn phối âm mưu trong ggplot2, mà sẽ cung cấp cho bạn sự linh hoạt để tùy chỉnh các thẩm mỹ. Dưới đây là hình minh họa sử dụng khung dữ liệu được xây dựng trong diamonds.

Để có tọa độ song song, bạn cần phải thêm cột ID để bạn có thể xác định mỗi hàng của khung dữ liệu, chúng tôi sẽ sử dụng làm thẩm mỹ group trong ggplot. Bạn cũng cần phải scale các giá trị số để tất cả chúng đều nằm trên cùng một tỷ lệ dọc khi chúng tôi vẽ chúng. Sau đó, bạn cần phải lấy tất cả các cột mà bạn muốn trên trục x và định hình lại chúng thành định dạng "dài". Chúng tôi làm tất cả những điều đó ngay bên dưới với nhà điều hành đường ống tidyverse/dplyr. Ngay cả sau khi giới hạn số lượng kết hợp danh mục, các đường có lẽ quá gắn bó với cốt truyện này để dễ hiểu, vì vậy hãy xem xét điều này chỉ đơn thuần là "bằng chứng về khái niệm". Hy vọng rằng, bạn có thể tạo ra một cái gì đó hữu ích hơn với dữ liệu của bạn. Tôi đã sử dụng colour (cho các dòng) và fill (đối với các điểm) thẩm mỹ dưới đây. Thay vào đó, bạn có thể sử dụng shape hoặc linetype tùy theo nhu cầu của mình.

library(tidyverse) 
theme_set(theme_classic()) 

# Get 20 random rows from the diamonds data frame after limiting 
# to two levels each of cut and color 
set.seed(2) 
ds = diamonds %>% 
    filter(color %in% c("D","J"), cut %in% c("Good", "Premium")) %>% 
    sample_n(20) 

ggplot(ds %>% 
     mutate(ID = 1:n()) %>%    # Add ID for each row 
     mutate_if(is.numeric, scale) %>% # Scale numeric columns 
     gather(key, value, c(1,5:10)),  # Reshape to "long" format 
     aes(key, value, group=ID, colour=color, fill=cut)) + 
    geom_line() + 
    geom_point(size=2, shape=21, colour="grey50") + 
    scale_fill_manual(values=c("black","white")) 

enter image description here

tôi đã không sử dụng ggparcoords trước đó, nhưng lựa chọn duy nhất mà có vẻ đơn giản (ít nhất là trong lần thử đầu tiên của tôi với chức năng) là để dán với nhau hai cột dữ liệu. Dưới đây là một ví dụ. Thậm chí chỉ với bốn tổ hợp thể loại, cốt truyện là khó hiểu, nhưng có lẽ nó sẽ được interpretable nếu có mô hình mạnh mẽ trong dữ liệu của bạn:

library(GGally) 

ds$group = with(ds, paste(cut, color, sep="-")) 

ggparcoord(ds, columns=c(1, 5:10), groupColumn=11) + 
    theme(panel.grid.major.x=element_line(colour="grey70")) 

enter image description here

+0

Cảm ơn bạn đã trợ giúp. Thay vì sử dụng GGally, tôi đang sử dụng ggplot2 để vẽ các tọa độ song song với nhiều biến phân loại sau khi chuyển dữ liệu của tôi sang định dạng rất dài .... nhưng vấn đề là tôi không thể mở rộng các trục y này. Trên thực tế, chỉ có một trục y trong cốt truyện của tôi, nhưng sau khi tôi thay đổi lưới chủ đề tôi làm cho cốt truyện trông giống như nó có nhiều trục y ... Những gì tôi thực sự muốn là tôi có thể mở rộng tất cả "trục y để làm cho cốt truyện dễ đọc hơn, giống như hình ảnh tôi đính kèm trong câu hỏi có quy mô cho mỗi trục y khác nhau. Có thể không? – Lexi

Các vấn đề liên quan