2016-05-05 9 views
2

Ich habe versucht, ein gestapeltes Flächendiagramm mit einer diskreten x-Variable zu erzeugen (weil ich das Geschäftsjahr anzeigen möchte, d. H. "2013/14" statt Kalenderjahr). Wenn Sie jedoch die X-Achsen-Variable in einen Faktor umwandeln, wird verhindert, dass die Geometrie im endgültigen Diagramm gerendert wird.ggplot2 Faktor x Variable Brüche geom_area

Gibt es einen Weg um dies?

library(ggplot2) 

dat <- structure(list(year = c(13, 13, 14, 14, 15, 15), 
         group_lvl = structure(c(1L, 2L, 1L, 2L, 1L, 2L), 
              .Label = c("a", "b"), class = "factor"), 
         val = c(35, 65, 50, 50, 75, 25)), 
       .Names = c("year", "group_lvl", "val"), row.names = c(NA, -6L), 
       class = "data.frame") 
dat 
    year group_lvl val 
1 13   a 35 
2 13   b 65 
3 14   a 50 
4 14   b 50 
5 15   a 75 
6 15   b 25 

ggplot(dat, aes(x = year, y = val)) + 
    geom_area(aes(fill = group_lvl), position = "stack") 

enter image description here

dat$year <- factor(dat$year) 

ggplot(dat, aes(x = year, y = val)) + 
    geom_area(aes(fill = group_lvl), position = "stack") 

enter image description here

sessionInfo() 
R version 3.3.0 (2016-05-03) 
Platform: i386-w64-mingw32/i386 (32-bit) 
Running under: Windows 7 x64 (build 7601) Service Pack 1 

locale: 
[1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United Kingdom.1252 
[3] LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C       
[5] LC_TIME=English_United Kingdom.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] ggplot2_2.1.0 

loaded via a namespace (and not attached): 
[1] labeling_0.3  colorspace_1.2-6 scales_0.4.0  plyr_1.8.3  tools_3.3.0  
[6] gtable_0.2.0  Rcpp_0.12.4  grid_3.3.0  digest_0.6.9  munsell_0.4.3 
+0

Wie funktioniert ein Flächendiagramm Sinn für kategorische Daten? Wenn Sie keine Dezimalstellen sehen möchten, ist es vielleicht besser, die Achse mit 'scale_x_continuous' zu steuern? – Gopala

+0

@Gopola, scheint mir ziemlich sinnvoll. Wie oben erwähnt, muss ich die Zeit auf der x-Achse als Geschäftsjahr anzeigen. Ein anderes Beispiel könnte das Jahrquartal sein (2013q3, 2013q4, 2014q1), wo eine kontinuierliche Skala wenig Sinn macht. In jedem Fall werden Faktoren als markierte Ganzzahlen gespeichert und so würde ich erwarten, dass das Flächendiagramm die x-Achse ohne Probleme darstellt. –

+0

Flächendiagramme zeigen Trends bei kontinuierlichen Variablen. Sie benötigen sie also in einem Typ, der in einem kontinuierlichen Maßstab dargestellt werden kann. Die Anpassung der Skala ist ein anderes Thema, was ich vorgeschlagen habe, und die folgende Antwort verwendet diesen Ansatz. – Gopala

Antwort

4

Nur Brüche addieren, keine Notwendigkeit, es ist ein Faktor zu machen.

ggplot(dat, aes(x = year, y = val)) + 
    geom_area(aes(fill = group_lvl), position = "stack") + 
    scale_x_continuous(breaks=c(13,14,15),labels=c("2013","2014","2015")) 

enter image description here

+0

perfekt, danke. –

Verwandte Themen