2011-10-21 11 views
7

Teraz, gdy zasada 40 lat Gaddafiego dobiegła końca, chcę zbudować wykres czasowy jego okresu u władzy z wynikami innych krajów w ciągu epoki. np. prezydenci amerykańscy, kanclerze Niemiec itd. Tak więc oś X byłaby czasem, kraje osi Y i podziałem osi czasu - w odpowiednim czasie - pokazującymi Nixona, Forda itp. dla USANajlepsza technika dla osi czasu

Ponieważ staram się nauczyć R , Wolałbym rozwiązanie w tym języku, ale mam wrażenie, że nie jest to najlepsze rozwiązanie. Wszelkie sugestie dotyczące tego lub alternatywnych, darmowych rozwiązań?

powinienem chyba dodawać, że jeśli w R dataframe ruszy

Country Boss TookCharge 

USA  Nixon 1969-01-20 
USA  Ford 1974-08-09 
Germany Brandt 1969-10-22 
Germany Schmidt 1974-05-16 
+3

Interesujące. Możesz zaznaczyć na swojej osi czasu, gdy Zachód przestanie demonizować Kaddafiego za nacjonalizację zagranicznej własności (co było uważane za wystarczająco złe w latach 70-tych i 80-tych) i zaczął demonizować go za korupcję, represje, masowe morderstwa itp. – MusiGenesis

+0

Arkusze Google Docs mają gadżet osi czasu, który można wstawić. Jest bardzo drobiazgowy i łamie się bardziej niż działa. Ja też chciałbym to zrobić R. jest solidny i elastyczny. – Farrel

Odpowiedz

5

Jest to proste zadanie dla ggplot:

stworzyć pewne dane:

x <- data.frame(
    country = rep(c("USA", "Germany"), each=2), 
    boss = c("Nixon", "Ford", "Brandt", "Schmidt"), 
    start = as.Date(c("1969-01-20", "1974-08-09", "1969-10-22", "1974-05-16")) 
) 

Bądź działki:

library(ggplot2) 
ggplot(x, aes(x=start, y=country)) + 
    geom_line() + 
    geom_point() + 
    geom_text(aes(label=boss), hjust=0, vjust=0) + 
    xlim(c(min(x$start), max(x$start)+5*365)) # Add some space to right 

enter image description here

+0

Dzięki chłopaki. To postawiło mnie na właściwej drodze. Czy istnieje ładny sposób na przemianę vjust tak, aby kolejne nazwy mogły spaść powyżej i poniżej linii. Gdy lider o długich nazwach szybko się do siebie powodzi, np. ZSRR w latach 80., fabuła staje się nieczytelna – pssguy

+0

@pssguy Tak, możesz podać wektor jako argument do 'vjust = ...' - więc coś takiego jak 'vjust = c (0, 1) 'powinno działać z powodu reguły recyklingu wektorowego (nie testowane). – Andrie

+0

Dzięki za sugestię, ale otrzymuję komunikat: "Podczas ustawiania estetyki mogą wystąpić tylko jedna wartość". Próbowałem ustawić przełącznik = c (0,1), a następnie vjust = switch, ale to też nie działało. Czy jest możliwe utworzenie funkcji poza ggplotem, która mogłaby wywołać vjust. Jestem nieco zamroczony w tym podejściu – pssguy

4

Można skonstruować zestaw rzadkie, nieregularne zoo lub xts timeseries z jednym dla każdej grupy powiązanych ze sobą zdarzeń adnotacji (prezydentów USA w jeden, kanclerze w drugim). Kolumna indeksu będzie datą, a wartością będzie adnotacja postaci. Masz teraz wybór bibliotek do tworzenia wykresów. Dzięki Lattice możesz podzielić go na jeden panel na grupę.

Alternatywnie można po prostu skonstruować jedną regularną serię czasową z lat, kiedy był u władzy, z pewnymi fałszywymi wartościami dla każdego punktu danych. Wykreśl, że za pomocą przezroczystej linii wystarczy ustawić podstawowy wykres, do którego następnie dodasz adnotacje. Możesz użyć abline lub podobnego.

Innym sposobem może być szybciej to http://www.inside-r.org/packages/cran/googleVis/docs/gvisAnnotatedTimeLine http://code.google.com/apis/chart/interactive/docs/gallery/annotatedtimeline.html#Example

+1

Tavis. Dzięki za sugestię. Gram z opcją googleVis, która może być lepszym rozwiązaniem internetowym niż to, co R może zaoferować +1 – pssguy

Powiązane problemy