2017-06-20 50 views
1

我的數據幀由三列組成,並且看起來像這樣:繪製沿軸兩列與第三列確定符號 - ggplot

year | theme | count 
----------------------------- 
1998  WH   13 
2001  WH   38 
1999  WH   5 
2011  NB   11 
2010  NB   29 
... 

這裏的整個數據幀:

structure(list(year = c(2015, 2014, 2013, 2012, 2011, 2010, 2009, 
2008, 2007, 2006, 2005, 2004, 2003, 2002, 2001, 2000, 1999, 1998, 
1997, 1996, 1995, 1994, 1993, 1992, 1991, 1990, 1989, 1988, 1987, 
1986, 1985, 1984, 1983, 1982, 1981, 1980, 1979, 1978, 1977, 1976, 
1975, 1974, 1973, 1972, 1971, 1970, 1969, 1968, 1967, 1966, 1965, 
1964, 1963, 1962, 1961, 1960, 2016, 2015, 2014, 2012, 2003, 1991, 
1987, 1977, 1975, 1968, 1965, 2016, 2015, 2013, 2012, 2011, 2010, 
2009, 2008, 2007, 2006, 2005, 2004, 2003, 2002, 2001, 2000, 1999, 
1998, 1997, 1996, 1995, 1994, 1991, 1990, 1988, 1986, 1985, 1983, 
1982, 1980, 1978, 1975, 1973, 1968, 2016, 2015, 2014, 2013, 2012, 
2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 2003, 2002, 2001, 
2000, 1999, 1998, 1997, 1995, 1994, 1993, 1992, 1991, 1990, 1987, 
1986, 1985, 1984, 1983, 1981, 1973, 1972, 1971, 1970, 1969, 1968, 
1967, 1964, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 
2007, 2006, 2005, 2004, 2003, 2002, 2001, 2000, 1999, 1998, 1996, 
1995, 1994, 1993, 1992, 1991, 1990, 1987, 1986, 1985, 1983, 1980, 
1979, 1978, 1976, 1973, 1972, 1971, 1967, 1965, 1962, 2016, 2015, 
2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 
2001, 2000, 1999, 1998, 1997, 1996, 1995, 1991, 1988, 1986, 1983, 
1982, 1980, 1978, 1975, 1973, 1968, 2016, 2015, 2014, 2013, 2012, 
2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 2003, 2002, 2000, 
1999, 1998, 1997, 1996, 1995, 1991, 1990, 1983, 1979, 1976, 2016, 
2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 
2004, 2002, 2001, 1999, 1998, 1997, 1996, 1995, 1994, 1993, 1992, 
1991, 1990, 1988, 1986, 1983, 1982, 1980, 1978, 1975, 1973, 1968, 
2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 2006, 2005, 
2004, 2003, 2001, 2000, 1999, 1998, 1996, 1995, 1994, 1988, 1986, 
1985, 1984, 1983, 1975, 1973, 1968, 2016, 2015, 2014, 2012, 2011, 
2010, 2009, 2008, 2006, 2005, 2004, 2002, 2001, 2000, 1998, 1997, 
1996, 1995, 1994, 1991, 1988, 1986, 1983, 1982, 1978, 1977, 1975, 
1973, 1968, 2016, 2015, 2014, 2012, 2009, 2004, 2003, 2002, 2001, 
1999, 1998, 1997, 1995, 1993, 1992, 1987, 1985, 1979, 1965, 1964, 
2015, 2014, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 
2003, 2002, 2001, 2000, 1999, 1998, 1997, 1996, 1995, 1994, 1992, 
1991, 1990, 1988, 1986, 1985, 1984, 1983, 1982, 1981, 1980, 1979, 
1978, 1976, 1975, 1974, 1973, 1968, 1967, 1963, 1961, 2016, 2015, 
2012, 2009, 2004, 2002, 2001, 1999, 1998, 1993, 1992, 1990, 1987, 
1985, 1979, 1965, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 
2006, 2005, 2004, 2001, 2000, 1999, 1998, 1997, 1996, 1995, 1994, 
1991, 1988, 1986, 1985, 1984, 1983, 1976, 1975, 1973, 1968, 1961, 
2016, 2015, 2014, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 
2004, 2003, 2002, 2001, 2000, 1999, 1998, 1997, 1996, 1995, 1994, 
1993, 1992, 1991, 1990, 1989, 1988, 1986, 1983, 1982, 1980, 1979, 
1977, 1976, 1975, 1973, 1968, 1961, 2016, 2015, 2014, 2012, 2011, 
2010, 2009, 2008, 2006, 2005, 2004, 2001, 2000, 1998, 1996, 1995, 
1994, 1988, 1986, 1983, 1978, 1975, 1973, 1968, 2016, 2015, 2014, 
2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 2003, 
2002, 2001, 2000, 1999, 1998, 1997, 1996, 1995, 1994, 1993, 1992, 
1991, 1990, 1989, 1988, 1987, 1986, 1985, 1983, 1981, 1980, 1979, 
1978, 1973, 1972, 1970, 1969, 1968, 1967, 2016, 2015, 2014, 2013, 
2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 2002, 2000, 
1999, 1998, 1997, 1996, 1995, 1994, 1991, 1989, 1988, 1986, 1983, 
1982, 1978, 1976, 1975, 1973, 1969, 1968, 1967, 2016, 2015, 2014, 
2012, 2011, 2010, 2009, 2008, 2006, 2005, 2002, 2001, 2000, 1999, 
1998, 1997, 1996, 1995, 1994, 1992, 1991, 1990, 1988, 1986, 1984, 
1983, 1975, 1973, 1968, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 
2009, 2008, 2007, 2006, 2005, 2004, 2003, 2002, 2001, 2000, 1999, 
1998, 1997, 1996, 1995, 1994, 1993, 1992, 1991, 1990, 1989, 1988, 
1987, 1986, 1985, 1984, 1983, 1982, 1981, 1980, 1978, 1977, 1976, 
1975, 1973, 1972, 1970, 1969, 1968, 1967, 1966, 2016), theme = 
structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 
8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 
8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 9L, 
9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 
9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 10L, 10L, 10L, 10L, 
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 11L, 
11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 
11L, 11L, 11L, 11L, 11L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 
12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 
12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 
12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 13L, 13L, 13L, 13L, 
13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 14L, 14L, 
14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 
14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 
14L, 14L, 14L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 
15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 
15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 
15L, 15L, 15L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 
16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 
16L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 
17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 
17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 17L, 
17L, 17L, 17L, 17L, 17L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 
18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 
18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 18L, 
19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 
19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 
19L, 19L, 19L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L), .Label = 
c("ALL", "AB", "BB", "BS", "CS", "DS", "EG", "FB", "GB", "KB", "KS", "LS", 
"LP", "MC", "NB", "NW", "SB", "SH", "VM", "WH"), class = "factor"), 
count = c(28, 36, 38, 22, 21, 24, 20, 36, 15, 14, 21, 12, 
16, 12, 11, 12, 15, 14, 8, 10, 3, 7, 4, 5, 10, 7, 7, 6, 5, 
15, 11, 4, 3, 6, 9, 8, 9, 5, 5, 9, 8, 6, 5, 5, 5, 7, 6, 6, 
8, 3, 4, 1, 3, 1, 3, 1, 15, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 
1, 6, 1, 6, 7, 2, 3, 7, 1, 5, 7, 2, 2, 2, 2, 5, 2, 3, 3, 
2, 2, 1, 4, 1, 2, 3, 1, 1, 2, 1, 1, 1, 1, 1, 3, 12, 4, 5, 
11, 4, 8, 8, 9, 4, 5, 9, 6, 10, 6, 8, 7, 7, 6, 2, 3, 2, 2, 
2, 1, 3, 2, 1, 3, 1, 3, 1, 1, 2, 2, 3, 1, 1, 3, 2, 6, 9, 
6, 4, 6, 3, 1, 4, 6, 2, 5, 5, 4, 2, 2, 5, 7, 4, 4, 3, 1, 
3, 4, 1, 1, 1, 3, 1, 2, 2, 4, 2, 2, 2, 1, 1, 2, 1, 1, 1, 
4, 6, 2, 1, 4, 3, 4, 3, 7, 1, 4, 4, 2, 1, 3, 2, 3, 1, 2, 
4, 2, 2, 2, 1, 1, 2, 1, 2, 1, 1, 4, 12, 1, 11, 11, 6, 7, 
8, 9, 4, 5, 8, 4, 1, 1, 5, 1, 2, 1, 3, 3, 1, 1, 1, 1, 1, 
8, 7, 3, 3, 3, 1, 6, 2, 7, 1, 4, 3, 2, 1, 1, 1, 2, 2, 1, 
4, 1, 1, 2, 3, 3, 3, 3, 1, 1, 2, 1, 1, 1, 1, 4, 6, 1, 1, 
3, 3, 2, 2, 4, 3, 4, 3, 1, 1, 2, 1, 2, 1, 2, 1, 1, 3, 1, 
1, 2, 1, 1, 1, 2, 4, 1, 2, 1, 2, 2, 7, 2, 2, 1, 2, 2, 2, 
3, 1, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 3, 1, 2, 
1, 1, 1, 1, 2, 2, 4, 1, 1, 2, 1, 1, 1, 1, 1, 2, 6, 1, 3, 
3, 3, 2, 8, 2, 4, 5, 3, 1, 3, 4, 8, 2, 6, 2, 4, 4, 2, 1, 
2, 4, 2, 4, 3, 2, 3, 3, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 
1, 4, 3, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 4, 1, 
2, 2, 2, 2, 1, 4, 3, 3, 2, 2, 3, 2, 3, 1, 1, 2, 1, 2, 2, 
4, 1, 2, 2, 1, 1, 1, 1, 1, 3, 7, 2, 4, 3, 3, 2, 6, 1, 4, 
4, 3, 1, 1, 1, 3, 2, 4, 1, 2, 2, 3, 3, 2, 2, 2, 1, 3, 3, 
1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 4, 1, 2, 1, 2, 1, 5, 2, 
2, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 14, 7, 5, 
8, 9, 7, 10, 14, 6, 11, 6, 6, 3, 5, 6, 7, 3, 5, 1, 3, 4, 
3, 6, 3, 5, 3, 3, 4, 1, 2, 1, 2, 1, 3, 1, 1, 2, 1, 1, 1, 
2, 4, 6, 7, 2, 5, 6, 4, 9, 3, 10, 1, 4, 4, 2, 1, 2, 1, 1, 
1, 2, 2, 1, 1, 1, 1, 4, 1, 1, 1, 1, 2, 1, 1, 2, 1, 2, 4, 
1, 2, 1, 1, 2, 3, 2, 2, 1, 2, 1, 2, 3, 1, 2, 1, 2, 2, 1, 
1, 2, 3, 2, 1, 1, 1, 1, 1, 11, 5, 12, 6, 9, 15, 9, 13, 7, 
10, 7, 8, 2, 8, 2, 5, 5, 7, 8, 6, 6, 5, 2, 4, 7, 8, 1, 6, 
2, 6, 6, 2, 2, 5, 5, 1, 1, 3, 2, 3, 2, 1, 1, 1, 2, 1, 1, 
11)), .Names = c("year", "theme", "count"), row.names = c(NA, 
-654L), class = "data.frame") 

我想要在x軸上繪製'年份'和沿着y軸繪製'主題',但有兩個必要條件:

  1. 第三個co lumn'count'應該確定符號。或者符號是 有顏色,顏色隨着計數而變化,或者符號是線段, 線條的粗細應該隨計數增加。
  2. 主題應該沿y軸排列,主題出現在圖表底部的較早年份 處。

這將是散點圖,其中符號由第三列中的值確定。

我可以告訴你我完全不成功的腳本,但是它對於一個帖子來說代碼太多。

任何建議非常感謝。

+0

您的數據排序的一年,然後: 'ggplot(數據,AES(X =年,Y =主題,color = count))+ geom_point()+ scale_color_gradient(low =「blue」,high =「red」)' –

回答

1

在一個非常基本的方式,你的代碼可能是類似的東西:

ggplot(df, aes(x=year, y=theme, color=count, size=count)) + 
geom_point() + 
theme_minimal() + 
theme(axis.text.y = element_text(size = 13), axis.text.x = element_text(size = 13), axis.title.y =element_text(size=15), axis.ticks = element_line(size = 0.5), axis.title.x=element_text(size=15)) + 
background_grid(major = "none", minor = "none") + 
scale_colour_gradient(low="grey", high="blue") + 
panel_border() 
+0

不幸的是'background_grid'函數似乎是未知的,就像'panel_border'一樣。 – Dag

+0

我建議保持答案minimal-ish - 主題內容都不是必需的,只是用於分散答案的關鍵組件(並且在沒有附加未命名包的情況下根本不運行)。 – Gregor

+0

使用庫(「cowplot」)。 @格雷戈謝謝你的建議。 – valz

1
df$theme = reorder(df$theme, df$year, FUN = min) 

ggplot(df, aes(x = year, y = theme, color = count)) + geom_point() 

您可能希望刪除「所有」,因此它不會在count主宰的變化,我們可以在那裏也還取決於計數拋出size

ggplot(subset(df, theme != "ALL"), 
     aes(
     x = year, 
     y = theme, 
     color = count, 
     size = count 
     )) + geom_point(alpha = 0.8)