2016-04-13 1 views
0

je la chaîne de Markov suivante:chaîne de Markov Réglage fin

pre<-cbind(c(rep("rain",100),rep("sun",100),rep("rain",100))) 
post<-cbind(c(rep("rain",50),rep("sun",70),rep("rain",100),rep("sun",80))) 
df<-cbind(pre,post) 
df<-as.data.frame(df) 
colnames(df)<-c("pre","post") 

states<-c("rain","sun") 

probsCase<-function(i,j){ 
sum(as.character(df$pre)==states[i] & as.character(df$post)==states[j])/sum(as.character(df$pre)==states[i]) 
} 

transitionMatrix<-outer(1:2,1:2,Vectorize(probsCase)) 
colnames(transitionMatrix)<-states 
rownames(transitionMatrix)<-states 

library(diagram) 
plotmat(transitionMatrix,relsize=0.75) 

qui se traduit par l'intrigue suivante:

enter image description here

Comment puis-je le faire pivoter de 90 degrés vers la droite, et régler la flèches circulaires auto-dirigées de sorte qu'ils sont sur l'axe médian de la parcelle, opposés l'un à l'autre au lieu d'être partiellement sur le côté comme ils le sont actuellement?

Répondre

0

les flèches circulaires peuvent être modifiées en manipulant les valeurs self.shiftx et self.shifty. L'emplacement de la flèche sur le cercle est déterminé par self.arrpos mais, attention, les angles sont mesurés en radians et non en degrés. Les étiquettes de boîte peuvent être commutées en modifiant la séquence des états comme ceci: states<-c("sun","rain") au lieu de states<-c("rain","sun"). Toujours essayer de comprendre comment faire pivoter l'ensemble de l'intrigue de 90 degrés.