ggvis so với ggplot2 + Sáng bóng; Chọn cái nào để hình dung tương tác?


10

Có một câu hỏi tương tự ở đây trong CrossValidated, và tôi đã đọc câu trả lời. Câu hỏi của tôi là một chút khác nhau. Tôi không muốn chỉ trực quan hóa dữ liệu của mình và thực sự những gì tôi muốn trực quan hóa không dễ hình dung bằng một trong hai gói.

Tôi có hai bộ điểm ( tọa độ ) trên cốt truyện của mình. Tôi muốn thêm các cạnh và làm cho nó tương tự như một biểu đồ. Nếu tôi có điểm, thì dựa trên bản chất của vấn đề của tôi, tôi cần thêm cạnh vào cốt truyện.n ( n / 2 ) 2x,yn(n/2)2

Sau đó, tôi muốn thêm một số tính năng tương tác vào cốt truyện của tôi. Chẳng hạn, bằng cách nhấp vào một điểm (đỉnh), tất cả các đỉnh khác không được kết nối với đỉnh được nhấp này phải biến mất để có một âm mưu sáng suốt và tập trung hơn.

Tôi đã cố gắng tìm một gói trực quan hóa mạng phù hợp với dự án của mình, nhưng có vẻ như tất cả chúng đều sử dụng dữ liệu về kết nối các cạnh hoặc nút và cung cấp một mạng dựa trên một số thuật toán bố cục cụ thể. Dữ liệu của tôi là khác nhau. Tôi có tọa độ của các nút và tôi muốn thiết lập một số cạnh giữa một số trong số chúng. Trong dữ liệu của tôi, các nút có vị trí cố định riêng và không được di chuyển xung quanh.

Cuối cùng, tôi thu hẹp các gói đến ggvisggplot2. ggvislà mới và mới ngoài việc có thiết kế có chủ ý để tạo ra các ô tương tác. Nhưng tôi phát hiện ra rằng ggplot2+Shinycũng có thể tạo ra các ô tương tác. (Điều đó có đúng không?) Bên cạnh đó, tôi cho rằng ggplot2các khả năng của đa dạng và trưởng thành hơn so với ggvis: ví dụ: ggplot2có tính năng phóng to trong khi ggviskhông có tính năng này. Quan trọng hơn, khi ggvisđang phát triển và thay đổi, tôi không muốn đầu tư nhiều thời gian cho một tác phẩm trở nên lỗi thời về mặt kỹ thuật hoặc lỗi trong một năm hoặc lâu hơn. Tôi nghĩ đây là trường hợp nếu tôi viết mã dựa trên ggvis.

Bây giờ bạn có thể vui lòng đánh giá sự lựa chọn của tôi ( ggplot2+shiny) và tư vấn cho tôi về khả năng thực hiện những gì tôi muốn làm với nó không?

Vì tôi không biết bất kỳ gói nào được đề cập, tôi đã bắt đầu học ggplot2từ cuốn sách của Wickham và tôi thích nó! Nhưng tôi sợ dành vài tuần và phát hiện ra rằng gói tuyệt vời này không thể làm những gì tôi muốn làm ngay cả với sự trợ giúp của Shiny.

PS: Tôi muốn đặt mã cuối cùng trên github để người dùng có thể tải xuống và chạy nó. Do đó, tôi không cần phải tạo một ứng dụng web, không cần bất kỳ trang web nào hoặc đưa bản đồ tương tác trực tuyến. Tôi chỉ cần có một cốt truyện tương tác có thể được chạy từ bên trong Rstudio.


Chào mừng đến với trang web! Bạn đã thử igraphhay D3?
Dawny33

Cảm ơn! Tôi đã xem lại những gì igraph có thể làm cho tôi và tôi đã không tìm thấy nó phù hợp với dữ liệu mà tôi có. Theo như tôi hiểu, igraph trực quan hóa một mạng dựa trên dữ liệu của các đỉnh được kết nối (hoặc dữ liệu tương tự về các cạnh). Dựa trên một số thuật toán và ưu tiên, igraph định vị các đỉnh trên biểu đồ tương thích với dữ liệu đã cho. Nhưng tôi muốn các đỉnh chính xác theo tọa độ tương ứng của chúng mà tôi có trong tập dữ liệu của mình. Tôi không muốn gói chọn bố trí và vị trí của họ.
Shahin

Tại sao không phải là d3js.org ? Có vẻ như bạn có yêu cầu rất đặc biệt. D3 làm cho nó cực kỳ dễ dàng để làm việc với SVG.
Ricardo Cruz

Bạn đã thử gephi chưa?
MM

Bạn có thể cung cấp một liên kết đến câu hỏi CrossVal.
Jim

Câu trả lời:


4

Vâng, nhiều tháng đã được thông qua từ yêu cầu trợ giúp này. Tôi viết câu trả lời này cho yêu cầu của riêng tôi để chia sẻ kinh nghiệm của tôi. Tôi đã học ggplot2và sau đó ggviscũng như Shiny. Shinycó thể làm việc với cả hai, nhưng tôi thấy ggviscó cấu trúc và sáng suốt hơn so với ggplot2. Một cái gì đó được mong đợi như cái trước đang được phát triển dựa trên kinh nghiệm phát triển của cái sau. Hơn nữa, ggvisdường như nhanh hơn nhiều so với ggplot2việc tạo biểu đồ / biểu đồ nhanh, có vẻ phù hợp hơn nhiều cho 'Shiny' và tạo ra một applet. Tuy nhiên, điểm tiêu cực là thiếu nhiều tính năng ggviskể từ khi gói đang được phát triển và chưa trưởng thành.

Và cảm ơn rất nhiều ý kiến ​​ở đây. Tôi đã kiểm tra Gephi, nó sẽ không giúp đỡ. Tôi đã tạo ra applet của mình hoạt động rất tốt, tuy nhiên cuối cùng tôi đã đạt đến điểm mà tôi cần sử dụng các công cụ mạnh hơn như d3js, như người ta đã đề xuất.


0

Thời gian trôi nhanh! Sau 2 năm kinh nghiệm làm việc, bây giờ tôi trả lời câu hỏi của chính mình với sự hiểu biết tốt hơn về Shiny, R và trực quan tương tác.

Plotly là câu trả lời tốt nhất. Nó có thể dễ dàng được sử dụng bằng cách chuyển đổi ggplotly () của các lô tĩnh ggplot2 hoặc trực tiếp bằng cách tìm hiểu logic đằng sau các hàm Plotly.

Trường hợp thứ hai được đề xuất cho các ứng dụng với các lô khác nhau.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.