2017-03-08 1 views
3

Ich versuche es so zu machen, dass es für jedes Team eine Linie gibt, deren Farbe der Farbe in der Legende entspricht. Ich habe das Programm geschrieben, als ob es ein Balkendiagramm wäre, da ich weiß, wie man das macht, also denke ich, dass es nur ein paar Änderungen gibt, die gemacht werden müssen, um daraus Linien zu machen. Hinweis: Ich möchte keine Linie, die am besten passt, sondern eine, die sich von Punkt zu Punkt verbindet.R Multiple Liniendiagramm für MLB-Team gewinnt nach Jahr

Dieser nächste Teil kann sehr zeitaufwendig sein, also erwarte ich nicht, dass jemand dabei hilft, aber ich hätte auch gerne die Teamlogos in der Legende, vielleicht die Teamnamen. Dann möchte ich in der Legende die Farbe mit dem Team als Linie und nicht als Kiste verbinden.

Jede Hilfe mit einem oder beiden von diesen würde sehr geschätzt werden.

EDIT: Ich möchte alle Funktionen, die das Programm unten hat, wie den grauen Hintergrund, weiße Gitter, ect.

df <- read.table(textConnection(
    'Year Orioles RedSox Yankees Rays BlueJays 
    1998 79  92  114 63 88 
    1999 78  94  98  69 84 
    2000 74  85  87  69 83 
    2001 63  82  95  62 80 
    2002 67  93  103 55 78 
    2003 71  95  101 63 86 
    2004 78  98  101 70 67 
    2005 74  95  95  67 80 
    2006 70  86  97  61 87 
    2007 69  96  94  66 83 
    2008 68  95  89  97 86 
    2009 64  95  103 84 75 
    2010 66  89  95  96 85 
    2011 69  90  97  91 81 
    2012 93  69  95  90 73 
    2013 85  97  85  92 74 
    2014 96  71  84  77 83 
    2015 81  78  87  80 93 
    2016 89  93  84  68 89'), header = TRUE) 



df %>% 
    gather(Team, Wins, -Year) %>% 
    mutate(Team = factor(Team, c("Orioles", "RedSox", "Yankees","Rays","BlueJays"))) %>% 
    ggplot(aes(x=Year, y=Wins)) + 
    ggtitle("AL East Wins") + 
    ylab("Wins") + 
    geom_col(aes(fill = Team), position = "dodge") + 
    scale_fill_manual(values = c("orange", "red", "blue", "black","purple"))+ 
    theme(
    plot.title = element_text(hjust=0.5), 
    axis.title.y = element_text(angle = 0, vjust = 0.5), 
    panel.background = element_rect(fill = "gray"), 
    panel.grid = element_line(colour = "white") 
) 

Antwort

4

können Sie geom_path(aes(color = Team)) anstelle von geom_col(aes(fill = Team) und eine benannte Farbpalette Ihre grundlegenden Ziele wie folgt zu erreichen:

# break this off the pipeline 
df <- gather(df, Team, Wins, -Year) %>% 
    mutate(Team = factor(Team, c("Orioles", "RedSox", "Yankees","Rays","BlueJays"))) 

# if you want to resuse the same theme a bunch this is nice 
# theme_grey() is the default theme 
theme_set(theme_grey() + 
       theme(plot.title = element_text(hjust=0.5), 
        axis.title.y = element_text(angle = 0, vjust = 0.5), 
        panel.background = element_rect(fill = "gray"))) 

# named palettes are easy 
# for specific colors i like hex codes the best 
# i just grabbed these of this nice website TeamColorCodes, could be fun! 
cust <- c("#FC4C00", "#C60C30", "#1C2841", "#79BDEE","#003DA5") 
names(cust) <- levels(df$Team) 

# use geom_path inplace of geom_col 
ggplot(df, aes(x=Year, y=Wins, color = Team)) + 
    geom_path(aes(color = Team)) + 
    scale_color_manual(values = cust) + 
    labs(title = "AL East Wins", 
     subtitle = "Ahhh", 
     y = "Wins", 
     x = "Year") 

Link to teamcolorcodes.com

enter image description here

+0

Vielen Dank für Ihre Antwort. Wie kann ich eine Linie hellblau machen? Ich habe versucht, es von "blau" zu blau (.3) zu ändern, bekam aber einen Fehler –

+0

Auch alles sieht gut aus, aber die einzige andere Sache, die ich möchte, ist Rasterlinien, vielleicht mit der Farbe weiß. –

+0

Ich werde definitiv diese Website für die Farben überprüfen, danke. –

Verwandte Themen