欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

R語(yǔ)言數(shù)據(jù)可視化ggplot添加左右y軸繪制天貓雙十一銷售圖

 更新時(shí)間:2021年11月06日 10:36:42   作者:Kanny廣小隸  
本篇文章主要介紹如何在R中,使用ggplot2包在一個(gè)圖像上添加左右兩個(gè) y 軸刻度,并在同一個(gè)圖像上繪制兩個(gè)完全不一樣的統(tǒng)計(jì)圖,有需要的朋友可以借鑒參考下

本文是以天貓雙十一銷量與增長(zhǎng)率為例,原始的數(shù)據(jù)可以參考上一篇文章:用 ggplot 重繪天貓雙十一銷售額圖,這里不再作過(guò)多的介紹。

同時(shí)整個(gè)的天貓雙十一的銷售額數(shù)據(jù)分析可以關(guān)注:天貓雙十一“數(shù)據(jù)造假”是真的嗎?

老規(guī)矩,先上最終成果(兩張圖只是顏色的差別):

上圖左邊 y 軸表示增長(zhǎng)率的刻度,右邊 y 軸表示銷售額的數(shù)據(jù),我們將兩者在同一張圖上進(jìn)行展現(xiàn)。其實(shí)將兩個(gè)統(tǒng)計(jì)圖在同一個(gè)坐標(biāo)系中呈現(xiàn)不算是這個(gè)繪圖的難點(diǎn),其真正的難點(diǎn)在與刻度的變換以及坐標(biāo)軸標(biāo)簽的設(shè)定。

下面我們開(kāi)始一步一步來(lái)繪制出上圖所示的圖案~

構(gòu)造數(shù)據(jù)集

構(gòu)造數(shù)據(jù)集前,我們先看看數(shù)據(jù):

年份 銷售額 增長(zhǎng)率
2009 0.5
2010 9.36 1772.00
2011 52 455.56
2012 191 267.31
2013 350 83.25
2014 571 63.14
2015 912 59.72
2016 1207 32.35
2017 1682 39.35
2018 2135 26.93
2019 2684 25.71

由于銷售額與增長(zhǎng)率都是近乎相同的量綱(單論數(shù)值看,都是在 0-3000 之間),所以我們?cè)谑孪瓤梢圆粚?duì)數(shù)據(jù)進(jìn)行變換,變換為統(tǒng)一的尺度。但我想要在坐標(biāo)軸上,增長(zhǎng)率以百分比的形式顯示,所以需要除以100,但增長(zhǎng)率除以100之后,為了把我們的兩個(gè) y 軸變換到同一個(gè)尺度區(qū)間,所以銷售額也需要隨之除以100。(注意,這里的銷售額除以100 可以不需要具體的實(shí)際意義,只是保證在圖像上呈現(xiàn)效果美觀即可,最后的實(shí)際區(qū)間我們可以通過(guò)修改坐標(biāo)軸的刻度值實(shí)現(xiàn)。)

因此生成數(shù)據(jù)的代碼如下:

year <- 2009:2019
sales <- c(0.5, 9.36, 52, 191, 350, 571, 912, 1207, 1682, 2135, 2684)
growth_rate <- c(NA, diff(sales) / sales[1:(length(sales) - 1)] * 100)
dat_overview <- data.frame(year = factor(year), sales = sales / 100, growth_rate = growth_rate / 100)

但經(jīng)常使用 ggplot 童鞋可能知道,我們沒(méi)有辦法直接只用上述的數(shù)據(jù)在 ggplot 中進(jìn)行繪制,需要進(jìn)行一個(gè)變換,也就是將銷售額與增長(zhǎng)率并列,并且再加一列變量作為 index,具體操作我們可以使用管道數(shù)據(jù)處理的 package :tidyr

具體的原因與使用方法可參見(jiàn):tidyr+ggplot2多個(gè)變量分層展示

library(tidyr)
dat_overview %>%
  gather(sales, growth_rate, key = "var", value = "value")

其結(jié)果如下:

   year         var      value
1  2009       sales  0.0050000
2  2010       sales  0.0936000
3  2011       sales  0.5200000
4  2012       sales  1.9100000
5  2013       sales  3.5000000
6  2014       sales  5.7100000
7  2015       sales  9.1200000
8  2016       sales 12.0700000
9  2017       sales 16.8200000
10 2018       sales 21.3500000
11 2019       sales 26.8400000
12 2009 growth_rate         NA
13 2010 growth_rate 17.7200000
14 2011 growth_rate  4.5555556
15 2012 growth_rate  2.6730769
16 2013 growth_rate  0.8324607
17 2014 growth_rate  0.6314286
18 2015 growth_rate  0.5971979
19 2016 growth_rate  0.3234649
20 2017 growth_rate  0.3935377
21 2018 growth_rate  0.2693222
22 2019 growth_rate  0.2571429

繪制散點(diǎn)

首先我們將數(shù)據(jù)框中的散點(diǎn)映射到圖像中:

dat_overview %>%
  gather(sales, growth_rate, key = "var", value = "value") %>%
  ggplot(aes(x = year, y = value, col = var)) +
  geom_point(size = 3, alpha = 0.6)

這里我們使用的是管道數(shù)據(jù)的 ggplot 的繪制方法,所以數(shù)據(jù)集直接使用 %>% 連接即可,不需要寫在 ggplot() 函數(shù)中。

同時(shí)關(guān)于繪圖,上面只是修改了我們散點(diǎn)的尺寸與透明度:size = 3, alpha = 0.6,得到的繪圖如下面所示。

這時(shí)候的圖還是非常 吃藕 (chou) 的,下面我們?cè)倬窦?xì)琢一些坐標(biāo)的布局與名稱。

修改兩坐標(biāo)軸信息

先直接上代碼:

dat_overview %>%
  gather(sales, growth_rate, key = "var", value = "value") %>%
  ggplot(aes(x = year, y = value, col = var)) +
  geom_point(size = 3, alpha = 0.6) +
  scale_y_continuous("增長(zhǎng)率", labels = scales::percent,
                     sec.axis = sec_axis(~ . * 100, name = "銷售額 (億元)")) +
  # scale_color_manual(labels = c("增長(zhǎng)率", "銷售額 (億元)"), values = c("blue", "red")) +
  scale_color_discrete(labels = c("增長(zhǎng)率", "銷售額 (億元)")) +
  labs(title = "2009 - 2019 年銷售額與增長(zhǎng)率", x = "年份") +
  theme(legend.position = "bottom",
        legend.title = element_blank(),
        plot.title = element_text(hjust = 0.5))

這里我們新添加了 scale_y_continuous(),這里是修改 y 軸的刻度,首先我們修改了 y 軸左軸的名稱,為增長(zhǎng)率,然后 label = scales::percent 表示將刻度上的數(shù)值以百分比的形式顯示。

最后 sec.axis = sec_axis(~ . * 100, name = "銷售額 (億元)") 則是添加右側(cè) y 軸 (這里叫 scecond axis),刻度為原始刻度乘以100,這里乘以100是由于我們?cè)谏射N售額數(shù)據(jù)的時(shí)候,為了容易尺度范圍,除以了100,同時(shí)添加右側(cè) y 軸的名稱: "銷售額 (億元)"。

scale_color_discrete() 表示將我們的圖例中的名稱進(jìn)行修改:英文改成中文。

也可以使用注釋中的 scale_color_manual() 函數(shù),同時(shí)修改名稱與散點(diǎn)的顏色,這里添加了注釋,需要的童鞋可以取消注釋,同時(shí)將 scale_color_discrete() 打上注釋。

接著我們?cè)傩薷囊恍┲黝}設(shè)置:legend.position = "bottom" 將我們圖例的標(biāo)簽調(diào)整到底部。其它的設(shè)置都是一些常規(guī)操作,可以翻看前面的博文,這里就不進(jìn)行細(xì)說(shuō)了。

最后就能得到我們最終的成果!

以上就是R語(yǔ)言數(shù)據(jù)可視化ggplot添加左右y軸繪制天貓雙十一銷售額的詳細(xì)內(nèi)容,更多關(guān)于ggplot添加左右兩邊y軸的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • R語(yǔ)言統(tǒng)計(jì)結(jié)果輸出至本地文件的幾種方法示例

    R語(yǔ)言統(tǒng)計(jì)結(jié)果輸出至本地文件的幾種方法示例

    這篇文章主要給大家介紹了關(guān)于R語(yǔ)言統(tǒng)計(jì)結(jié)果輸出至本地文件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • R語(yǔ)言ggplot2邊框背景去除的實(shí)現(xiàn)

    R語(yǔ)言ggplot2邊框背景去除的實(shí)現(xiàn)

    這篇文章主要介紹了R語(yǔ)言ggplot2邊框背景去除的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • R語(yǔ)言多線程運(yùn)算操作(解決R循環(huán)慢的問(wèn)題)

    R語(yǔ)言多線程運(yùn)算操作(解決R循環(huán)慢的問(wèn)題)

    這篇文章主要介紹了R語(yǔ)言多線程運(yùn)算操作(解決R循環(huán)慢的問(wèn)題),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • R語(yǔ)言-如何定義數(shù)據(jù)框的列名

    R語(yǔ)言-如何定義數(shù)據(jù)框的列名

    這篇文章主要介紹了R語(yǔ)言-定義數(shù)據(jù)框的列名操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • R語(yǔ)言 實(shí)現(xiàn)將兩張圖放在同一張畫布

    R語(yǔ)言 實(shí)現(xiàn)將兩張圖放在同一張畫布

    這篇文章主要介紹了R語(yǔ)言 實(shí)現(xiàn)將兩張圖放在同一張畫布的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • R語(yǔ)言拼接字符串_paste的用法說(shuō)明

    R語(yǔ)言拼接字符串_paste的用法說(shuō)明

    這篇文章主要介紹了R語(yǔ)言拼接字符串_paste的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • R語(yǔ)言中c()函數(shù)與paste()函數(shù)的區(qū)別說(shuō)明

    R語(yǔ)言中c()函數(shù)與paste()函數(shù)的區(qū)別說(shuō)明

    這篇文章主要介紹了R語(yǔ)言中c()函數(shù)與paste()函數(shù)的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • R語(yǔ)言實(shí)現(xiàn)漂亮的ROC圖效果

    R語(yǔ)言實(shí)現(xiàn)漂亮的ROC圖效果

    pROC是一個(gè)專門用來(lái)計(jì)算和繪制ROC曲線的R包,目前已被CRAN收錄,因此安裝也非常簡(jiǎn)單,同時(shí)該包也兼容ggplot2函數(shù)繪圖,本次就教大家怎么用pROC來(lái)快速畫出ROC圖,感興趣的朋友一起看看吧
    2022-06-06
  • 詳解R語(yǔ)言apply系列函數(shù)的使用

    詳解R語(yǔ)言apply系列函數(shù)的使用

    R語(yǔ)言的循環(huán)效率并不高,所以并不推薦循環(huán)以及循環(huán)嵌套。為了實(shí)現(xiàn)循環(huán)功能的情況下,兼顧效率,R語(yǔ)言提供了apply系列函數(shù),用于對(duì)規(guī)則的數(shù)據(jù)進(jìn)行函數(shù)式的迭代處理,下面就來(lái)和大家聊聊它們的使用吧
    2023-03-03
  • 大數(shù)據(jù)分析R語(yǔ)言RStudio使用超詳細(xì)教程

    大數(shù)據(jù)分析R語(yǔ)言RStudio使用超詳細(xì)教程

    RStudio是用于R編程的開(kāi)源工具,這篇文章主要介紹了大數(shù)據(jù)分析R語(yǔ)言RStudio使用教程和一些RStudio的重要技巧,竅門和快捷方式,可快速將您變成RStudio高級(jí)用戶,感興趣的朋友跟隨小編一起看看吧
    2021-03-03

最新評(píng)論