R語言ggplot2:計數圖(Counts Plot)簡單小例子

2022-01-29 小明的數據分析筆記本

今天搞直播,時間是晚上7點到9點,今天沒有準備推文,還是舊文重發。這應該是最開始寫公眾號的時候寫的內容,轉眼間2年多了。最開始寫的的時候每篇推文基本都會遇到問題,現在回頭看這些問題自己基本都能夠解決了,這應該記筆記的一個好處吧:回首來時路,能夠看見自己留下的每一個腳印!

前幾天發現一個非常有意思的數據可視化小例子https://github.com/nanli-7/basketballdatavisualization,自帶數據和代碼,非常好的學習材料,自己重複了其中絕大部分內容,但是最後一幅非常漂亮的圖沒有找到對應的代碼,自己也沒有思路應該如何入手;今天刷知乎的時候發現了一篇文章 深度好文 |Matplotlib 可視化最有價值的 50 個圖表(附完整 Python 原始碼), 發現裡面有一張圖和自己沒能畫出來的非常像,才知道這類圖叫計數圖(Counts plot),但是印象裡ggplot2好像沒有現成的函數來做這個事情,在不知如何下手之際突然想到之前看過一篇文章Top 50 ggplot2 Visualizations - The Master List (With Full R Code), 應該會有對應的內容,果不其然,發現了 ggplot2 包中的 geom_count() 函數,以下內容記錄自己重複計數圖的代碼

繪製散點圖的時候如果數據較多會出現散點重疊的情況,這樣圖中展示的數據看起來會比實際數據顯得少一些(The original data has 234 data points but the chart seems to display fewer points. This is because there are many overlaping points appearing as a single dot.)。那麼如何解決這個問題呢?(So how to handle this?)其中一種解決辦法是用 jitter plot (這個jitter自己也不知道如何翻譯)來代替 Scatter plot(散點圖)ggplot2 對應的函數為 geom_jitter(),他可以讓重疊的點隨機分布在原始位置的周圍,width參數(argument)控制的應該是點距離原始位置的距離,通過兩幅圖片可以非常直觀的看出差別

同樣的數據集,圖B看起來數據就多出來許多

代碼

library(ggplot2)

library(ggpubr)

p1<-ggplot(mpg,aes(cty,hwy))+

 geom_point()+theme_bw()+

 labs(title="Scatterplot with overlapping points",

      caption = "Author: Mingyan")

p2<-ggplot(mpg,aes(cty,hwy))+

 geom_jitter(width=0.5,size=1)+

 theme_bw()+labs(title="Jittered Points",caption="Author: Mingyan")

ggarrange(p1,p2,ncol=2,labels=LETTERS[1:2])

上圖使用的數據為R語言自帶的數據包 mpg

另外一種解決辦法就是文章開頭提到的Counts Plot(計數圖),散點重疊的位置只畫一個點,用這個點的大小來代表這個位置重疊點的多少(there is more points overlap, the size of the circle gets bigger),如下:

代碼

ggplot(mpg,aes(cty,hwy))+

 geom_count(color="tomato3",show.legend = F)+theme_bw()+

 labs(title="Counts Plot",caption="Author: MingYan")

接下來重複開頭提到的數據可視化教程裡的圖片

代碼

df<-read.csv("../Desktop/data_analysis_practice/basketball_data_visualization-master/baseball_data.csv",header=T)

colnames(df)

ggplot(df,aes(height,avg))+

geom_count()+theme_bw()

按照以上的思路作圖,發現結果和目標相差比較大,才意識到目標圖片不是counts plot目標圖片是以慣用手和身高來分組計算擊球率的平均值,點的大小反映的是HR的平均值,明白了目標圖片傳達的含義,那麼作圖也有了思路:

整理數據

library(dplyr)

df<-read.csv("../Desktop/data_analysis_practice/basketball_data_visualization-master/baseball_data.csv",header=T)

colnames(df)

df1<-df%>%

 group_by(handedness,height)%>%

 summarise(avg=mean(avg),n=n(),hr=mean(HR))

繪圖

ggplot(df1,aes(height,avg,color=handedness,size=hr))+

 geom_point(alpha=0.8)+theme_bw()+

 scale_color_manual(values=c("red","blue","darkgreen"))+

 labs(x="Players' Height (inches)",

      y= "Average of Players' Batting Performance (avg)",

      title="Baseball Player Performance",

      caption="Author:MingYan")+

 scale_x_continuous(breaks=df1$height,labels=df1$height)

嘗試著添加標籤時遇到了問題暫時還不知道如何解決

同時還遇到了其他問題

歡迎大家關注我的公眾號

小明的數據分析筆記本

小明的數據分析筆記本 公眾號 主要分享:1、R語言和python做數據分析和數據可視化的簡單小例子;2、園藝植物相關轉錄組學、基因組學、群體遺傳學文獻閱讀筆記;3、生物信息學入門學習資料及自己的學習筆記!

相關焦點

  • Python語言plotnine VS R語言ggplot2
    相對於R中的基礎可視化包,是基於圖形語法的繪圖包,一經提出就迅速受到廣大R語言使用者的喜愛。ggplot2包利用圖層疊加的繪圖方式,往圖像上不斷的添加圖形元素、注釋、統計結果等內容。plotnine庫可以看作是在Python中對ggplot2包的一種實現,方便Python對數據可視化的應用。本文章會分別介紹在R和Python中,如何使用相關的庫進行數據可視化分析。
  • R語言畫展ggplot2篇-實用的Q-Q plot
    又是介紹乾貨的一天,今天介紹Q-Q plot (quantile-quantile plot)。在Q-Q plot中,y軸是所要觀察的實際樣本,x軸指的是如果此樣本符合正態分布的預期數值。如果樣本符合正態分布,那麼做出的散點圖將會分布在對角線上。
  • R語言做t-SNE降維的一個簡單小例子
    之前有人在公眾號留言問過用R語言如何實現t-SNE降維,今天的推文介紹一下R語言實現的代碼,主要內容參考自連結
  • R語言的ggplot2做平滑的折線圖簡單小例子
    之前的圖文  跟著Nature Genetics學畫圖~ggplot2畫折線圖並在指定區域添加灰色背景 畫折線圖的遇到的一個問題是:ggplot2默認的折線圖畫出來基本都是帶尖的,有沒有辦法將折線圖變得平滑一點呢?
  • R語言的ggplot2+ggforce包繪製散點圖並添加分組邊界
    之前的推文介紹過ggplot2繪圖添加橢圓分組邊界和圓形分組邊界,藉助的函數分別是ggforce包裡的geom_circle()函數今天查找桑基圖的資料的時候發現了一份介紹ggforce這個包的使用方法的文章 https://rviews.rstudio.com/2019/09/19/intro-to-ggforce/ ,發現發現添加分組邊界還有其他的實現方法,今天的推文記錄一下
  • R語言做K均值聚類的一個簡單小例子
    參考連結https://www.guru99.com/r-k-means-clustering.htmlhttps://datascienceplus.com/k-means-clustering-in-r/https://www.datanovia.com/en/lessons/k-means-clustering-in-r-algorith-and-practical-examples
  • R語言ggplot2繪製經驗累積分布(empirical cumulative distribution)曲線的簡單小例子
    這個圖我還是第一次聽說。藉助ggplot2中的stat_ecdf()函數實現我們先來看一下幫助文檔中的例子df_1 <- data.frame(  x = c(rnorm(100, 0, 3), rnorm(100, 0, 10)),  g = gl(2, 100))
  • R語言學習:數據可視化技能,Pair Plot,LR模型手寫版,dplyr包across函數,快速學習ggplot2包畫圖
    require("mosaicData")){  install.packages("mosaicData")}library(dplyr)library(ggplot2)plotdata <- CPS85 %>%   filter(wage < 40)ggplot(data = plotdata,
  • 【R語言】--- ggplot2包的geom_bar()函數繪製柱狀圖
    在R語言中,有很多包可繪製柱狀圖,比如graphics包barplot()函數和ggplot2包geom_bar()函數。本文介紹ggplot2包的geom_bar()函數繪製柱狀圖。()函數組合圖library(cowplot)plot_grid(p1, p2, p3, p4, labels = LETTERS[1:4], ncol = 2)
  • 數據處理基礎—ggplot2了解一下
    要了解其工作原理,讓我們看一個例子:library(ggplot2)library(tidyverse)set.seed(1)counts <- as.data.frame(matrix(rpois(100, lambda = 10), ncol
  • 在Python中使用ggplot2風格及語法: plotnine與ggplot|可視化系列05
    Hadley Wickham編寫的ggplot2 在R語言中聲名遠揚,使得統計數據可視化能力成為R語言的一大優勢(這位大神還寫了dplyr、tidyr等影響深遠的R包)。表示的是y值是x變量的計數,因此aes(x='x',y='y')的情況下需要設置stat = "identity"。
  • R語言繪製 醫學分析中常用的 森林圖 forestplot(方法2)
    利用forestplot包的forestplot定製化的「手繪」森林圖。c('圖中','可以','增加','任意','數量','的列'), c("95% CI","0.71 [0.317,1.76]","1.335 [0.9,2.842]","2.465 [1.597,5.173]","0.831 [0.58,1.42]","1.665 [0.876,3.637]"), c("P value","0.379","0.334",
  • R語言繪圖之ggplot2
    那麼今天我們就為大家介紹一下目前在R語言中流行的繪圖包ggplot2。1. ggplot2的安裝:install.packages("ggplot2")。2. ggplot2的繪圖原理: ggplot2的核心理念是將繪圖與數據分離,數據相關的繪圖與數據無關的繪圖分離,並按圖層作圖。
  • 醫學統計與R語言:點圖(dotplot)
    "廣東", "寧夏", "內蒙古", "上海", "陝西", "江蘇", "北京", "重慶",                                             "湖南", "山西", "安徽", "福建", "山東", "天津", "浙江"))install.packages(ggplot2
  • Python/R: 森林圖(Forest Plot)的繪製
    今天這篇推文,小編就帶大家了解一下森林圖(Forest Plot) 的繪製方法,主要內容如下:Python-森林圖(Forest Plot)繪製方法森林圖(Forest Plot)的簡單介紹森林圖(Forest Plot) 常用於Meta分析結果展示使用
  • R語言數據可視化ggplot2包
    展開一張畫布ggplot2和其他作圖工具不同,它是以圖層覆蓋圖層的方式畫出一個完美圖像的,就像是photoshop裡的圖層,那麼首先我們得有一張畫布(如果沒有安裝R語言和ggplot2請見《 十八-R語言特徵工程實戰
  • ggplot2繪製面積圖
    繪製圍繞x軸創建對稱的面積圖。<- map %>%  right_join(filter(water_map, source %in% source_list[8:14]))map1_plt <-  ggplot() +  geom_sf(data = map, fill = map_bck_clr, size = 0.2
  • R語言繪圖(ggplot2、ggpurb)從入門到精通01--課程介紹
    本系列課程要求大家有一定的R語言基礎,對於完全零基礎的同學,建議去聽一下師兄的《生信必備技巧之——R語言基礎教程》。本課程將從最基本的繪圖開始講解,深入淺出的帶大家理解和運用強大而靈活的ggplot2包。內容包括如何利用ggplot2繪製散點圖、線圖、柱狀圖、添加註解、修改坐標軸和圖例等。
  • R語言繪製條形圖
    熟悉R語言的用戶應該都可以熟練的繪製條形圖,但在實際應用中,我們常常會根據數據展示的需求對條形圖進行調整,這就需要我們花費大量時間了解條形圖繪製函數的一些參數及高級方法。基於此,本文整理出一些常用的條形圖繪製代碼,希望可以為大家帶來一些方便。
  • 用R語言的ggplot2繪製漂亮的圖形
    ggplot2 以美輪美奐的統計製圖能力位居各類繪圖軟體排名前列,同時此包功能也在增加。此文簡單介紹 ggplot2 的基本原理和操作,便於大家對 ggplot2 快速入門。ggplot() 作為泛型函數(gplot() 能快速作圖,卻不是泛型函數),能對任意類型的 R 對象進行可視化操作,這是 ggplot2 的精髓所在。