Yönlendirilmiş grafikleri köşeli hizalarla çizilen ve her köşe noktasının altına bir miktar metin ekleyen bir işlev oluşturmak istiyorum, örneğin aşağıdaki örnek çizim gibi bir şey. çizim fonksiyonu köşeler olarak pasta grafikleri işlemek gerekir, bu yüzden iki sorun var igraph: etiketleri yerleştirme ve ızgara düzenindeki boş alanı kaldırma
adjm <- matrix(c(0,1,0,1,
0,0,1,1,
0,0,0,1,
0,0,0,0), nrow=4, byrow=TRUE)
g1 <- graph.adjacency(adjm, mode="directed")
values <- lapply(1:4, function(x) sample(1:4,4))
windows(width=7, height=3.5)
plot(g1, layout=layout.grid(g1, width=4),
vertex.shape="pie", vertex.pie=values,
vertex.pie.color=list(heat.colors(4)),
edge.curved=TRUE,
vertex.label=LETTERS[1:4], vertex.size=50,
vertex.label.dist=5, vertex.label.degree=pi/2,
edge.label=1:5, rescale=FALSE,
xlim=c(-0.2,3.5), ylim=c(0,0.5))
R.
yılında
igraph
paketini kullandık.
Neden vertex etiketi ne kadar uzun olursa, aşağıdaki örnekte olduğu gibi köşe merkezine olan uzaklık ne kadar uzun olur? Onları doğru mesafeyi elle bulup tanımlamaksızın aynı seviyede görünmeye zorlayabilir miyim? hizalanmış araziler çizdirirken
windows(width=7, height=3.5) plot(g1, layout=layout.grid(g1, width=4), vertex.shape="pie", vertex.pie=values, vertex.pie.color=list(heat.colors(4)), edge.curved=TRUE, vertex.label=c("A", "AA", "AAAA", "AAAAAA"), vertex.size=50, vertex.label.dist=5, vertex.label.degree=pi/2, edge.label=1:5, rescale=FALSE, xlim=c(-0.2,3.5), ylim=c(0,0.5))
nasıl boşluğu kaldırmak için? Yatay bir grafik oluşturursam, pencerenin alt kısmında çok fazla boş alan olacak. Görüntüyü daha düzleştirin, üçüncü çizimde olduğu gibi daha küçük grafik. (Grafiğin boyutu arsa dikey veya yatay herhangi pozisyon, uyabilecek şekilde belirlendiği gibi görünüyor.) Ben daha yassı girdaplar doğru boyutta tutmak için argüman
asp=0
yazabilirplot(g1, layout=layout.grid(g1, width=4), vertex.shape="pie", vertex.pie=values, vertex.pie.color=list(heat.colors(4)), edge.curved=TRUE, vertex.label=c("A", "AA", "AAAA", "AAAAAA"), vertex.size=20, vertex.label.dist=2, vertex.label.degree=pi/2, edge.label=1:5)
Pencere ancak otomatik eğrilikler ve köşe etiketlerinin konumları değişir. Negatif üst kenar boşluğunu, etiket mesafelerini ve kenar eğriliğini manuel olarak ayarlayabilirim, ama tabii ki bu genel bir işlev için bir çözüm değildir. Şimdiye kadarki en iyi sonuç, ilk arsanın kodunda olduğu gibi
rescale=FALSE
sonucudur, ancak kenar eğrilikleri hala çok küçüktür ve daha büyük köşe noktaları ile köşelerin tamamen arkasına geçerler. (Ayrıca, değişken köşe uzaklık mesafeleriyle ilgili problem hala devam etmektedir.)autocurve.edges
'un doğrudan kullanımı bana herhangi bir eğrilik vermez. Bir daha ne denemek istediğine dair bir fikrin var mı?