国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - R語言 - R語言實現ggplot重繪天貓雙十一銷售額曲線圖過程

R語言實現ggplot重繪天貓雙十一銷售額曲線圖過程

2022-01-19 13:47Kanny廣小隸 R語言

這篇文章主要為大家介紹了如何使用ggplot繪制天貓雙十一銷售額曲線圖的實現過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前一段時間,很多人被這張圖刷屏了:

R語言實現ggplot重繪天貓雙十一銷售額曲線圖過程

這張圖的來源是一篇名為 “淘寶2009-2018年歷年雙11銷售額數據造假” 的文章。圖中散點為天貓雙十一銷售額數據,曲線為原作者擬合的回歸線。乍一看散點完美地分布在曲線上,原作者便直接聲稱:“淘寶雙十一銷售額數據造假!不可能有這么完美的擬合!” 可事實真的是這樣嗎?

作為一個熱愛畫畫的博主,我們先不來考慮這個問題,直接來試著在 R 中繪制出上圖,一個更好看版本的上圖。

 

Let's start

溫馨小提示:在這篇博客中,你可以學會下述 ggplot 的繪圖小技巧:

如何在圖像中擬合二次曲線;

如何在圖像中添加文本或自適應地添加文本;

如何刪除一些不必要的背景線;

還有一些常規操作:換主題、改刻度、改顏色等等… …

偷偷放個最終成果:

R語言實現ggplot重繪天貓雙十一銷售額曲線圖過程

 

輸入數據

首先我們查到具體每一年的天貓銷售額數據,然后在 R 中構建 data frame.

year <- 2009:2019
sales <- c(0.5, 9.36, 52, 191, 350, 571, 912, 1207, 1682, 2135, 2684)
dat_sales <- data.frame(year = year, sales = sales)

由于我們想重點凸顯出 2019 年的具體表現,所以我們還需要添加一列 index 表示是否為 2019 年(非 2019 年為 1, 2019 年為 2):

dat_sales$ind <- factor(c(rep(x = 1, 10), 2))

數據框長著如下這樣:

 year   sales ind
1  2009    0.50   1
2  2010    9.36   1
3  2011   52.00   1
4  2012  191.00   1
5  2013  350.00   1
6  2014  571.00   1
7  2015  912.00   1
8  2016 1207.00   1
9  2017 1682.00   1
10 2018 2135.00   1
11 2019 2684.00   2

好啦,有了上述數據框,我們就可以開始進行 ggplot 的繪圖了!

 

粗略繪圖

首先我們就用默認參數畫出散點變化趨勢,同時 2019 年標注出不一樣的顏色:

library(ggplot2)
ggplot(dat = dat_sales) +
geom_point(aes(x = year, y = sales, col = ind))

R語言實現ggplot重繪天貓雙十一銷售額曲線圖過程

但是這樣的繪圖有很多問題:缺少標題,坐標軸的標題改中文,x 軸的顯示不是離散的年份,散點過小,圖例問題等等問題,我們先一步一步來進行完善。

 

完善散點圖

ggplot(dat = dat_sales) +
geom_point(aes(x = year, y = sales, col = ind), size = 4) +
scale_x_continuous(breaks = 2009:2019, labels = 2009:2019) +
labs(title = "2009 - 2019 年銷售額", x = "年份", y = "銷售額 (億元)") +
theme(legend.position = "none",
      plot.title = element_text(hjust = 0.5))

R語言實現ggplot重繪天貓雙十一銷售額曲線圖過程

其中,size = 4, 表示將散點進行放大,具體的尺寸可以自己進行設置; breaks = 2009:2019 表示原本數據集中在 x 軸上對應的值; labels = 2009:2019 表示映射到圖像上 x 軸的值; legend.position = "none"表示取消 legend 顯示。

強調:這里為了顯示年份,其實可以采用將年份轉換成 factor 型的方法,但由于我們還需要使用年份數據進行曲線擬合,若轉化成 factor 會使得曲線擬合失敗,因此我們采用稍微復雜一些的修改 x 軸刻度的方法。

 

添加擬合曲線

下面我們就開始添加二次函數擬合曲線:

ggplot(dat = dat_sales) +
geom_point(aes(x = year, y = sales, col = ind), size = 4) +
geom_smooth(aes(x = year, y = sales), se = FALSE, method = "lm", formula = y ~ x + I(x^2), size = 2) +
scale_x_continuous(breaks = 2009:2019, labels = 2009:2019) +
labs(title = "2009 - 2019 年銷售額", x = "年份", y = "銷售額 (億元)") +
theme(legend.position = "none",
      plot.title = element_text(hjust = 0.5))

R語言實現ggplot重繪天貓雙十一銷售額曲線圖過程

在 ggplot 中通常都是使用 geom_smooth 來進行曲線或者直線的擬合,對于線性、二次、三次函數,我們都是使用 method = "lm"; se = FALSE 表示不顯示置信區間; formula = y ~ x + I(x^2) 表示使用二次函數進行擬合; 最后的 size = 2 表示調整線的粗細。

 

在散點上添加銷售額

可以發現,這樣的曲線只能看出趨勢,但是卻看不出每年的具體銷售額,所以接下來我們嘗試在圖像的每個散點加上具體的銷售額:

# library(ggrepel)
ggplot(dat = dat_sales) +
geom_point(aes(x = year, y = sales, col = ind), size = 4) +
geom_smooth(aes(x = year, y = sales), se = FALSE, method = "lm", formula = y ~ x + I(x^2), size = 2) +
geom_text(aes(x = year, y = sales, label = sales), hjust = 0.5, vjust = -1) +
# geom_text_repel(aes(x = year, y = sales, label = sales)) +
ylim(0, 3000) +
scale_x_continuous(breaks = 2009:2019, labels = 2009:2019) +
labs(title = "2009 - 2019 年銷售額", x = "年份", y = "銷售額 (億元)") +
theme(legend.position = "none",
      plot.title = element_text(hjust = 0.5))

R語言實現ggplot重繪天貓雙十一銷售額曲線圖過程

當我們需要在繪圖中添加文本時,通??梢允褂?geom_text 函數,然后 aes(label = ) 中設定需要顯示的變量名稱,最后的 hjust = 0.5, vjust = -1 表示調整顯示的相對位置,前者表示水平位置,后者表示垂直位置,這個根據繪圖的不同需要自己進行手動調整。

同時,2019 年的銷售額較高,如果不調整 y 軸的顯示范圍,最上面顯示的銷售額 2684 會被遮擋,所以我們添加了 ylim(0, 3000)。

另外,細心的童鞋一定發現了,我們在代碼中添加了兩行注釋,注釋的內容同樣是添加文本的語句: geom_text_repel(aes(x = year, y = sales, label = sales)),這個語句可以自適應地調整每個文本顯示內容,使文本不會擋住我們的散點和曲線,這個函數在包 ggrepel 中。這里之所以是因為這個方式大多用于圖像中散點比較多,比較亂的情況,如果在此幅圖中使用,會使得銷售額的文本顯示略顯混亂。

 

刪除不必要的背景線

再細心一些的童鞋可能觀察到了,背景的網格圖,在 x 軸每兩個年份之間都有一根垂直線,這個垂直線是毫無意義的。這時我們不禁要問,是否有方法能夠將這根線消去呢?

答案是肯定的:

ggplot(dat = dat_sales) +
geom_point(aes(x = year, y = sales, col = ind), size = 4) +
geom_smooth(aes(x = year, y = sales), se = FALSE, method = "lm", formula = y ~ x + I(x^2), size = 2) +
geom_text(aes(x = year, y = sales, label = sales), hjust = 0.5, vjust = -1) +
ylim(0, 3000) +
scale_x_continuous(breaks = 2009:2019, labels = 2009:2019) +
labs(title = "2009 - 2019 年銷售額", x = "年份", y = "銷售額 (億元)") +
theme(panel.grid.minor = element_blank(),
      legend.position = "none",
      plot.title = element_text(hjust = 0.5))

R語言實現ggplot重繪天貓雙十一銷售額曲線圖過程

修改起來其實也不難,可以發現,每個年份對應的垂直線叫做 major,而年份沒對應到的網格線叫做 minor,因此我們直接在 theme 中添加 panel.grid.minor = element_blank() 即可。

 

終極美化

到這里,我們的基本元素的拼湊已經告一段落了,但是整體圖看起來依舊是不夠美觀,所以接下來我們再進行一些操作來美化繪圖,最終代碼與結果如下:

ggplot(dat = dat_sales, aes(x = year, y = sales)) +
geom_smooth(se = FALSE, method = "lm", formula = y ~ x + I(x^2), size = 2, col = "#b3cde3") +
geom_point(aes(col = ind), size = 4) +
ylim(0, 3000) +
geom_text(aes(label = sales), hjust = 0.5, vjust = -1) +
scale_x_continuous(breaks = 2009:2019, labels = 2009:2019) +
labs(title = "2009 - 2019 年銷售額", x = "年份", y = "銷售額 (億元)") +
theme_bw(base_family = "Times") +
theme(legend.position = "none",
      panel.grid.minor = element_blank(),
      panel.border = element_blank(),
      plot.title = element_text(hjust = 0.5))

R語言實現ggplot重繪天貓雙十一銷售額曲線圖過程

這里其實做了一些細節的調整,首先先繪制擬合曲線,再繪制散點,這樣散點就會在曲線的上方,這樣看起來會更加的美觀。其次改變了擬合曲線的顏色:col = "#b3cde3",改變了繪圖的主題:theme_bw(base_family = "Times"),刪除了丑丑的邊框:panel.border = element_blank()。

至此,我們美美的繪圖重構就完成了!

 

小作業

最后,感興趣的童鞋不妨將我們圖中的二次擬合曲線替換成三次函數擬合,或者兩者均添加,然后修改一下透明度,使得兩條線都能看見一部分。

以上就是ggplot繪制天貓雙十一銷售額曲線圖實現過程的詳細內容,更多關于ggplot繪制天貓雙十一銷售額的資料請關注服務器之家其它相關文章!

原文鏈接:https://blog.csdn.net/weixin_41929524/article/details/103246346

延伸 · 閱讀

精彩推薦
  • R語言R語言gsub替換字符工具的具體使用

    R語言gsub替換字符工具的具體使用

    這篇文章主要介紹了R語言gsub替換字符工具的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友...

    lztttao10372021-12-24
  • R語言R語言中的vector(向量),array(數組)使用總結

    R語言中的vector(向量),array(數組)使用總結

    這篇文章主要介紹了R語言中的vector(向量),array(數組)使用總結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要...

    A葉子葉來5772021-11-14
  • R語言如何用R語言繪制散點圖

    如何用R語言繪制散點圖

    這篇文章主要介紹了如何用R語言繪制散點圖,幫助大家更好的理解和學習使用R語言,感興趣的朋友可以了解下...

    菜鳥教程13002021-12-23
  • R語言R語言實現支持向量機SVM應用案例

    R語言實現支持向量機SVM應用案例

    本文主要介紹了R語言實現支持向量機SVM應用案例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    一天_pika5222022-01-18
  • R語言基于R/RStudio中安裝包“無法與服務器建立連接”的解決方案

    基于R/RStudio中安裝包“無法與服務器建立連接”的解決方案

    這篇文章主要介紹了基于R/RStudio中安裝包“無法與服務器建立連接”的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    truffle52815052022-01-05
  • R語言R語言讀取xls與xlsx格式文件過程

    R語言讀取xls與xlsx格式文件過程

    這篇文章主要為大家介紹了使用R語言讀取xls與xlsx格式文件的過程步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪...

    Kanny廣小隸11982022-01-20
  • R語言R語言中qplot()函數的用法說明

    R語言中qplot()函數的用法說明

    這篇文章主要介紹了R語言中qplot()函數的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    Jack_丁明12752022-01-05
  • R語言R語言常量知識點總結

    R語言常量知識點總結

    在本篇文章里小編給大家整理了一篇關于R語言常量知識點總結內容,有興趣的朋友們可以學習分享下。...

    R語言教程網12102021-12-29
主站蜘蛛池模板: 国产亚洲精品成人 | 国产精品久久久久久久久软件 | 国产精品一区在线 | 999精品视频一区二区三区 | 色婷婷国产精品免费网站 | 久久久国产一区二区三区 | 亚洲国产精品久久久 | 久久情侣视频 | 好吊在线观看 | 欧美日韩在线免费 | 国精产品一区二区三区有限公司 | av中文字幕在线 | 成人午夜精品一区二区三区 | 在线观看黄色电影 | 在线视频一区二区三区 | a免费在线 | 欧美日韩亚洲成人 | 欧美福利在线观看 | 日韩欧美一级片 | 91久久精品国产91久久 | 九色porny丨国产精品 | 99热国产精品 | 中文字幕亚洲区 | 二区在线观看 | 国产成人综合av | 久久精品国产亚洲一区二区三区 | 精品国产一区二区三区性色av | 日韩在线不卡 | 国产高清亚洲 | 在线观看成人av | 福利视频在线播放 | 中文字幕亚洲一区二区三区 | 中文久久| 黄视频在线播放 | 超黄网站在线观看 | 青青操天天干 | 亚洲精品美女 | 欧美日韩精品免费观看 | 国产精品乱码久久 | 欧美在线免费视频 | 91精品国产日韩91久久久久久 |