“ 能最好又最清晰的表示數(shù)據(jù)變化趨勢的統(tǒng)計圖表厘贼,就是折線圖了吧界酒。”
上一節(jié)內(nèi)容中,我們講解了關于使用qplot和ggplot繪制條形圖和直方圖的方法
光速繪制漂亮的條形圖和直方圖
onlybugs嘴秸,公眾號:輕松玩轉(zhuǎn)生信可視化系列3 | 快速繪圖qplot2-條形
折線圖常常被用來表示數(shù)據(jù)的變化趨勢毁欣,我們最常見的折線圖都是這樣,首先岳掐,具有一個類別型變量或者具有變化趨勢的x變量凭疮,然后具有隨著趨勢發(fā)生變動的y變量,然后有很多個組別串述,每個組別隨著x的變化执解,y的變化趨勢不同,因此就可以繪制一組比較不錯的折線圖了纲酗。
其實折線圖的話衰腌,我們使用excel或者tableau也可以做出不錯的效果,如果你熟悉python的話觅赊,那么使用seaborn也是可以的右蕊,但是上述工具的可拓展性以及可以控制的參數(shù)比較少,沒辦法全局操作茉兰。如果你需要高要求的折線圖,請使用ggplot欣簇,今天首先用qplot來繪制比較基本的折線圖规脸。
讓我們開始吧坯约!
繪制基本折線圖
開始畫圖的第一步,當然是加載我們的包莫鸭,以及展示一下我們要使用的數(shù)據(jù)集了闹丐,由于此處展示的折線圖繪制比較基礎,所以我們自己生成一組數(shù)據(jù)集
library(ggplot2)
year <- rep(1999:2021, times = 2)
type <- rep(c('A','B'),each = 23)
value <- c(runif(23),runif(23, min = 2,max = 2.5))
df <- data.frame(year,value,type)
df1 <- df[df$type == "A",]
這里給大家搞了一組最簡單的時間序列數(shù)據(jù)被因,其實使用真實的數(shù)據(jù)也可以细办,比如value可以是某個季度的銷售額變化弱恒,股市的變化等等,接下來的type表示我想看的兩個類型,比如兩支不同的股票瞬铸,或者兩個不同品牌的同一種商品,根據(jù)折線就可以看出它們之間的區(qū)別壮韭,以及變化趨勢裕膀,甚至是變化趨勢的區(qū)別。
下面先給大家整個最基礎的呻粹,只畫一條折線的
qplot(x = year,y = value,data = df1,
geom = 'line')
效果很丑壕曼,就是一條扭曲的線嘛,但是如果是真實數(shù)據(jù)等浊,我們能得到如下結論腮郊,首先,隨著年份的增加筹燕,我們的因變量整體是在逐漸降低的轧飞,此外,如果大家了解時間序列分析的話還能看出來數(shù)據(jù)的變化有點循環(huán)波動的意思庄萎,具體分析就需要結合更多的知識才能解釋這種現(xiàn)象踪少。
扯多了,下面講講基本的繪圖參數(shù)糠涛,對于折線圖來說援奢,非常重點的參數(shù)就是關于折線的顏色以及折線的寬度,加上通用的折線的類型
qplot(x = year,y = value,data = df1,
geom = "line",
color = I("#219ebc"))
是不是已經(jīng)漂亮了很多忍捡,不過太細了集漾,粗一些更好
qplot(x = year,y = value,data = df1,
geom = "line",
color = I("#219ebc"),
size = I(1.6))
現(xiàn)在看起來已經(jīng)比較不錯了,但是仍舊有一點點的不舒服砸脊,原因就在于我們的折線好像每一折都缺失了什么一樣具篇,所以需要看我們的下一部分教程。
散點折線圖
上面的內(nèi)容中凌埂,我們講解了最基本的折線圖的繪制驱显,但是我們的圖看起來總是有一點別扭的感覺,和我們平時論文里或者商業(yè)分析中的不太一樣,因為我們的圖中缺失了數(shù)據(jù)標識的點埃疫。
很多人都以為這種復雜的圖需要使用ggplot部分語法才能繪制伏恐,其實不然,使用qplot依舊可以達到這個效果栓霜,我們只需要在geom參數(shù)中傳入一個包含line和point的向量就可以做到了
qplot(x = year,y = value,data = df1,
這簡直就是藝術品一樣翠桦,不過大家可能會產(chǎn)生疑問,為什么我們的線條就這么細呢胳蛮,怎么就不能粗起來呢销凑?我給大家展示一下,然后再解釋為什么
qplot(x = year,y = value,data = df1,
geom = c('line','point'),
color = I("#219ebc"))
也許你仔細看的時候仅炊,能發(fā)現(xiàn)我們其實是有散點的斗幼,但是它和折線融為了一體,我們無法分辨茂洒。那你可能會問了孟岛,為什么不給size也傳兩個參數(shù)呢?抱歉督勺,我做不到渠羞,因為I函數(shù)只能接受一個參數(shù),如果你傳一個向量給size也是不行的智哀,人家不要你次询。
這么看來好像了無解了,別急瓷叫,我給你一個未來才會講解的方案的結果屯吊,這也是為什么qplot有了以后還需要ggplot
qplot(x = year,y = value,data = df1,
geom = c('line','point'),
color = I("#219ebc"),
size = I(1.6))
(配色比較一般,將就著看)
分組折線圖
最后摹菠,我們來講解一下我們?nèi)粘V锌吹降淖疃嗟暮行叮纸M折線圖,這是一種非常實用而且美觀的圖表
qplot(x = year,y = value,group = type,
color = type,
data = df,
geom = c('line','point'))
結果一目了然次氨,我?guī)Т蠹曳治鲆幌逻@里的參數(shù)蔽介,有些細微變化,不說可能就是坑了煮寡。首先虹蓄,多了一個新的參數(shù),叫做group幸撕,我們可以試著不指定看看
qplot(x = year,y = value,
data = df,
geom = c('line','point'))
你可能會說這是啥啊薇组,跟個噪音譜子一樣,難看死了坐儿,而且好像也沒啥實際價值律胀。你說對了宋光,因為我們的數(shù)據(jù)year是作為x軸的,每個year對應了兩個value炭菌,它們分別是種類A和B跃须,這也就導致了ggplot也不知道該怎么做了,只好給你都連在一起娃兽。
所以,我們的group參數(shù)的目的就是告訴ggplot尽楔,我們要把數(shù)據(jù)分組投储,按照哪一列進行分組,然后color后面的參數(shù)如果不跟上I()函數(shù)的話阔馋,就是用這一列映射不同的顏色玛荞,有幾個類別變量就映射幾個顏色。現(xiàn)在再翻上去看看我們繪制分組散點折線圖是不是就一目了然了呢呕寝?
下一篇可視化的文章會講解關于箱線圖和小提琴圖的繪制勋眯,同樣是使用qplot進行處理,簡單又方便下梢,實在是美哉客蹋,連我接連用qplot用多了,都忍不住對它贊美一下下孽江。