2017-06-14 1 views
0

ein. Ich zeichne ein Steigungsdiagramm mit ggplot, aber die Beschriftungen werden zusammen gruppiert und wegen der Skalierung der zwei Achsen nicht richtig angezeigt. Irgendeine Idee?Stellen Sie die Schrittskalierung mit ggplot für das Steigungsdiagramm in R

Mein Code und der Graph Is there any way to adjust step scale?

Thanks a lot!

#Read file as numeric data 
betterlife<-read.csv("betterlife.csv",skip=4,stringsAsFactors = F) 
num_data <- data.frame(data.matrix(betterlife)) 
numeric_columns <- sapply(num_data,function(x){mean(as.numeric(is.na(x)))<0.5}) 
final_data <- data.frame(num_data[,numeric_columns], 
betterlife[,!numeric_columns]) 

## rescale selected columns data frame 
final_data <- data.frame(lapply(final_data[,c(3,4,5,6,7,10,11)], function(x) scale(x, center = FALSE, scale = max(x, na.rm = TRUE)/100))) 

## Add country names as indicator 
final_data["INDICATOR"] <- NA 
final_data$INDICATOR <- betterlife$INDICATOR 
employment.data <- final_data[5:30,] 
indicator <- employment.data$INDICATOR 
## Melt data to draw graph 
employment.melt <- melt(employment.data) 


#plot 
sg = ggplot(employment.melt, aes(factor(variable), value, 
       group = indicator, 
       colour = indicator, 
       label = indicator)) + 
    theme(legend.position = "none", 
    axis.text.x = element_text(size=5), 
    axis.text.y=element_blank(), 
    axis.title.x=element_blank(), 
    axis.title.y=element_blank(), 
    axis.ticks=element_blank(), 
    axis.line=element_blank(), 
    panel.grid.major.x = element_line("black", size = 0.1), 
    panel.grid.major.y = element_blank(), 
    panel.grid.minor.y = element_blank(), 
    panel.background = element_blank()) 
# plot the right-most labels 

sg1 = sg + geom_line(size=0.15) + 
    geom_text(data = subset(employment.melt, variable == "Life.expectancy"), 
     aes(x = factor(variable), label=sprintf(" %2f %s",value,INDICATOR)), size = 1.75, hjust = 0) 

# plot the left-most labels 

sg1 = sg1 + geom_text(data = subset(employment.melt, variable == "Employment.rate"), 
       aes(x = factor(variable), label=sprintf("%s %2f ",INDICATOR,value)), size = 1.75, hjust = 1) 
sg1 
+0

Was meinen Sie mit "Schrittweite anpassen"? PS: Willkommen auf der Website! – mzuba

+0

Nehmen wir an, ich möchte die Werte von 99 und 99,5 mit Labels versehen. Ich möchte den Mindestabstand zwischen den beiden Labels festlegen, damit sie sich nicht überschneiden (wie in meinem Diagramm gezeigt). Sag mir, ob das Sinn macht. Vielen Dank! –

Antwort

0

Haben Sie versucht, eine Skala, zum Beispiel x einzurichten (aber ich denke, Sie es auch für y tun sollte)

scale_x_continuous(breaks = seq(0, 100, 5)) 

wo 0 bis 100 ist der Bereich und 5 ist der Schritt Größe. Sie müssen diese Werte entsprechend Ihrer Grafik anpassen. Source

Verwandte Themen