[问题] 如何让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