2017-11-27 2 views
0

포인트와 그 위에 세그먼트를 그리기 위해 R로 그래픽을 만들어야합니다. 동일한 그래픽에서 W2, W3, W4에 대해 정확히 동일한 작업을 수행해야하지만 첫 번째 그래픽에 추가하는 방법을 알지 못합니다. W2의 경우 x는 2이어야하고 w3은 3이어야합니다. 또한 누군가가 같은 그래픽에서 for와 apper를 사용하여이 작업을 수행 할 수있는 방법을 말해 줄 수 있습니까? 나는 또한 어떻게 든 점과 그 축의 좌표를 파선으로 그리기를 원한다. 당신이있는 경우R 그래픽 포인트 세그먼트

w1<-c(-0.931,-3.858,3.1946,1.2263) 
    w2<-c(-0.1075,-1.4753,-2.4762,1.9593) 
    w3<-c(-0.6301,0.7811,1.5725,0.1442) 
    w4<-c(0.6267,-1.2948,-0.1932,-0.5225) 
    w5<-c(0.1683,-0.2534,0.0937,-0.2469) 
    cent<-cbind(w1,w2,w3,w4,w5) 
    cent 
    comp<-c("W1","W2","W3","W4","W5") 
    plot(c(1,1,1,1),y=cent[,1], xlab="Componente",ylab="Centroid",pch=19) 
    segments(1,max(cent[,1]),1,min(cent[,1])) 

    library(ggplot2) 
    ggplot(centroizi_w, aes(x=c(1,1,1,1), y=cent[,1])) + 
     geom_point() 

답변

3
당신은 긴 형식, 키 (즉, W 값)에 의해 다음 그룹에 DF 변환 tidyr를 사용할 수

...

library(ggplot2) 
library(tidyr) 
centroizi_w <- gather(as.data.frame(centroizi)) #this converts the matrix to a df, 
         #then to long format, with default columns 'value' and 'key' 

ggplot(centroizi_w, aes(x=as.numeric(as.factor(key)), y=value, group=key)) + 
    geom_point() 

enter image description here

이상의 열 값이 W가 아니라면 위의 경우 x=as.numeric(gsub("W","",key))을 사용하는 것이 더 좋을 것입니다. 요인 접근 방식은 숫자가 아닌 알파벳순으로 정렬됩니다!

+0

너는 * 길이 * 형식이 아니라 넓다고 생각합니다. – Brian

+0

@ 브라이언 참으로 내가 할께 - 고마워! –

0

여기부터 시작하겠습니다. 세그먼트와 파선이 무엇인지 파악하기가 어려웠으므로 더 많은 작업이 필요할 수 있습니다.

library(dplyr) 
centroizi <- as.data.frame(centroizi) 

centroizi <- centroizi %>% 
    gather(Key, Value) %>% 
    mutate(x = as.numeric(substr(Key, 2, 2))) 

ggplot(centroizi) + 
geom_point(aes(x=x, y=Value, colour = Key)) + 
geom_line(aes(x=x, y=Value, colour = Key))