[問題] 如何讓legend在圖表中標示正確的資料

作者: paranoia5201 (邁向研究生)   2018-03-12 14:42:41
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
入門(寫過其他程式,只是對語法不熟悉)
[問題敘述] & [程式範例]:
一個原始的資料為lung、展開後則為lung_spread。詳細資料內容如下:
> head(lung)
year areaname_new ADJ_R
1 2001 台北市 30.55
2 2001 台中市 32.94
3 2001 台南市 29.64
4 2001 高雄市 25.68
5 2001 新北市 36.65
6 2001 彰化縣 33.75
> lung_spread
year 台中市 台北市 台南市 屏東縣 高雄市 雲林縣 新北市 嘉義縣 彰化縣
1 2001 32.94 30.55 29.64 22.31 25.68 30.22 36.65 32.52 33.75
2 2002 30.80 30.60 31.88 21.89 23.93 30.12 36.82 31.71 35.46
3 2003 31.14 28.12 28.54 28.44 25.40 34.66 30.04 36.14 34.87
4 2004 32.44 31.32 31.75 29.53 29.68 34.60 34.37 38.13 36.27
5 2005 31.77 29.57 34.63 31.19 32.76 39.00 33.98 35.87 32.35
6 2006 32.72 31.12 33.69 27.85 33.99 35.13 34.07 37.66 34.52
7 2007 34.32 31.31 34.87 29.35 34.93 29.02 39.93 36.43 36.16
8 2008 36.04 31.54 34.25 26.50 33.06 33.83 38.79 36.78 35.96
9 2009 34.21 35.32 39.07 30.73 33.25 37.66 42.11 40.54 38.38
10 2010 33.48 33.42 36.86 27.62 33.90 31.79 38.90 38.33 36.49
11 2011 34.76 33.27 35.77 29.30 33.83 33.10 38.69 36.34 37.04
12 2012 36.90 33.39 37.12 30.91 35.77 35.89 41.09 38.36 40.02
13 2013 34.44 33.33 34.14 33.13 34.39 38.50 39.21 36.98 36.73
14 2014 33.92 34.02 35.77 30.99 37.30 37.29 39.96 35.32 40.80
15 2015 37.47 35.78 38.06 32.90 35.58 39.14 38.07 35.44 38.11
問題一:
如果用以下的語法劃出歷年折線圖,旁邊的legend內容不曉得是否正確?
(labels的順序為lung_spread所呈現的順序排列)
(有沒有比較聰明的方式,可以讓我不用一個一個變項輸入......包括legend的名稱?)
ggplot(lung, aes(x=year, y=ADJ_R, group = areaname_new)) +
geom_line(aes(color=areaname_new))+
geom_point(aes(color=areaname_new))+
theme(legend.position="right")+
scale_color_discrete(
labels = c("台中市", "台北市", "台南市",
"屏東縣", "高雄市", "雲林縣",
"新北市", "嘉義縣", "彰化縣"))
問題二:如果是照以下語法畫圖,卻又不會出現legend。那我該要怎麼寫才對呢?
(順便一問:這個線條的表現又比上面的成果還醜...有無任何優化方式?)
ggplot(lung_spread, aes(x = year)) +
geom_line(aes(y = 台中市), colour="grey", group = 1, size = 1.5) +
geom_line(aes(y = 台北市), colour="blue", group = 1, size = 1.5) +
geom_line(aes(y = 台南市), colour="brown", group = 1, size = 1.5) +
geom_line(aes(y = 高雄市), colour="green", group = 1, size = 1.5) +
geom_line(aes(y = 新北市), colour="pink", group = 1, size = 1.5) +
geom_line(aes(y = 彰化縣), colour="orange", group = 1, size = 1.5) +
geom_line(aes(y = 雲林縣), colour="black", group = 1, size = 1.5) +
geom_line(aes(y = 嘉義縣), colour="white", group = 1, size = 1.5) +
geom_line(aes(y = 屏東縣), colour="yellow", group = 1, size = 1.5) +
labs(x = "Year", y = "Age-Standardized Adjustment Ratio",
title = "歷年發生率,2001-2015")
[環境敘述]:
R version 3.3.2
[關鍵字]:
折線圖、legend
作者: x88776544pc (龍飛五丈原)   2018-03-12 16:35:00
把 areaname_new 拿來用就可以啦
作者: paranoia5201 (邁向研究生)   2018-03-12 22:19:00
可以請一樓指導一下該如何用嗎?
作者: x88776544pc (龍飛五丈原)   2018-03-13 09:43:00
我覺得你畫的圖沒錯, 只是圖示呈現順序不一樣你可以檢查某一年的數據來確認, 至於要調順序你要從 aes 裡的 order 或 資料的 level 去改只改 label 如果跟資料 levels 不同反而是畫錯怕沒講清楚, 加上 scale_color_discrete 之前是對的

Links booklink

Contact Us: admin [ a t ] ucptt.com