2016-04-21 6 views
0

Ich habe eine data.frame, die auf wissenschaftliche Artikel zu einem bestimmten Thema verweist. Alle diese Papiere wurden zwischen 1985 und 2015 veröffentlicht.Histogramm wird als Linie angezeigt: erzwinge die Darstellung von 0, wenn kein Wert gefunden wurde

Die Struktur meiner data.frame (my_db) ist:

"Authors" , "Title"  , "Year" 
"Doe, J." , "Hello world" , 1985 
"Foo, B." , "Baz"   , 2013 
... 

Ich möchte ein Histogramm zeichnen die Anzahl der Einträge pro Jahr zeigt. Ich möchte auch, dass das Histogramm eine Zeile und keine Balken verwendet. Dafür, plotten ich meine Grafik als:

ggplot(my_db, aes(Year)) + stat_bin(geom = "line", binwidth = 1, center = 1980) 

I Graph erhalten folgende

enter image description here

Die Linie im Jahr beginnt 1985 (was tho älteste Eintrag ist, ich habe). Allerdings würde Ich möchte die Linie plotten 0 s seit Jahren vor 1985 (siehe rote Linie), so dass es offensichtlich ist, gibt es keine Daten vor 1985. Ich habe versucht coord_cartesian(xlim = c(1980,2015)): Es ändert sich die Grafikspanne, aber die Linie bleibt gleich ...

+0

wäre es nicht besser, verwenden 'geom_density()' statt 'stat_bin() '?? – PavoDive

+0

@PavoDive 'ggplot (meine_db, aes (Jahr)) + geom_density (aes (window =" rechteckig ", von = 1980), stat =" count ")' ist in der Tat ein guter Anfang, aber die "binwidth" scheint zu breit ... – ebo

Antwort

1

PavoDive Vorschlag der Erwägung, folgende Grafik hat seinen Zweck erfüllt:

ggplot(my_bd, aes(Year)) + geom_freqpoly(aes(y = ..count..),binwidth = 1, center = 1980) + scale_x_continuous(limits = c(1980,2015)) 

result

+0

Gut, dass du dein eigenes Problem gelöst hast. Das ist der Weg! – PavoDive

Verwandte Themen