2015-09-30 27 views
8

Tôi có biểu đồ mà tôi đã tạo bằng igraph. Tôi muốn trải ra các nút. Cách duy nhất tôi đã tìm thấy cho đến nay để làm điều này là để quy mô bố trí và buộc các lệnh cốt truyện để không rescale.tăng khoảng cách giữa các nút igraph

png("kmeansColouredNetwork.png", width=1200,height = 1000) 
col=c("yellow", "saddlebrown", "brown1","chartreuse2", "chocolate1","darkorange" ,"deepskyblue1", "hotpink1","plum2") 
for(i in 1:9){ 
    V(graph)$cluster[which(V(graph)$name %in% kmeans[,i])]<-col[i] 
} 
V(graph)$color=V(graph)$cluster 
coords <- layout.fruchterman.reingold(graph)*0.5 
plot(graph, layout = coords, vertex.label=NA, rescale=FALSE, vertex.size=degree(graph)*.25,vertex.color=V(graph)$cluster) 
labels = paste("cluster:", 1:length(colours)) 
legend("left",legend=labels, col=col, pch=16, title="K means clustered subgroups") 
dev.off() 

Nếu tôi không rescale, các nút kết nối cao trung lại với nhau và tôi nhận được một đồ thị như thế này, nơi các mô hình trong cơ thể của đồ thị là không thể phân biệt: enter image description here

On Mặt khác, nếu tôi yêu cầu lệnh cốt truyện không được giải cứu, thì tôi nhận được điều này: enter image description here

nơi các mẫu này rõ ràng, nhưng một nửa đồ thị bị loại bỏ. Nó không phải là vấn đề kích thước cốt truyện như thể tôi tăng kích thước của png, nó vẫn tập trung đồ thị ra khỏi cạnh của cốt truyện.

Nó không phải là vấn đề của bố trí - Tôi đã thử fruchterman.reingold, layout_nicely, reingold.tilford, layout.circle, bố cục ngẫu nhiên, điều tương tự cũng xảy ra.

Dường như đã từng là biến để đặt yếu tố đẩy giữa các nút, nhưng dường như không được chấp nhận.

Làm cách nào để trải rộng các nút của biểu đồ ra hoặc rescale và recenter cốt truyện?

+0

Tôi đã gặp sự cố tương tự với igraph. Tôi đã làm việc xung quanh nó bằng cách làm cho tất cả các đỉnh, cạnh và đầu mũi tên tương đối nhỏ hơn, lưu biểu đồ dưới dạng pdf và phóng to trên khu vực mà tôi quan tâm. Bạn cũng có thể sử dụng các màu mờ cho các nút (ví dụ: 'vertex.color =" # 0000FF25 "'), giúp xem qua phần thừa. Tôi hy vọng có một giải pháp sạch hơn mặc dù! –

+2

Có thể trùng lặp của [igraph axes xlim ylim plot không chính xác] (http://stackoverflow.com/questions/11272349/igraph-axes-xlim-ylim-plot-incorrectly) – Phiter

Trả lời

2

Nó KHÔNG câu trả lời của tôi, chỉ cần tìm thấy trên stackoverflow:
igraph axes xlim ylim plot incorrectly

Về cơ bản, bạn có thể đặt ylim và xlim và asp. Bạn có thể đặt phần nào của biểu đồ để hiển thị (như thường lệ với xlim và ylim) và nếu hai trục phụ thuộc vào nhau.

plot(g, rescale = FALSE, ylim=c(1,4),xlim=c(-17,24), asp = 0) 
+2

Bạn có thể đã đánh dấu nó là một bản sao, sau đó. – Phiter

1

Lựa chọn 1: làm cho các đỉnh nhỏ

node.size= c(10,10,10) 
plot(net, vertex.size=node.size*0.25) 

Lựa chọn 2 (trong trường hợp khoảng cách giữa các đỉnh không phải là quan trọng với bạn):

# Use the tkplot option to edit your graph in GUI 
tkplot (net) 

Lưu ý: tkplot kết quả đầu ra biểu đồ dưới dạng eps. Nếu bạn muốn chỉnh sửa nó thêm hoặc xuất nó sang pdf tôi đề nghị sử dụng inkscape (tôi sử dụng nó cho tất cả các chỉnh sửa đồ thị của tôi - chỉ cần lưu biểu đồ dưới dạng pdf trong RStudio và chỉnh sửa nó trong inkscape). Đối với trường hợp eps nếu bạn đang ở trên một cửa sổ máy, bạn sẽ cần phải tinh chỉnh inkscape để mở định dạng này. Một quy trình rất ngắn và đơn giản được chi tiết here:

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