数学建模社区-数学中国
标题: R语言绘制二维密度图 [打印本页]
作者: 1047521767 时间: 2021-10-29 10:55
标题: R语言绘制二维密度图
R语言绘制二维密度图二维密度图显示了两个数值变量之间的关系,一个在x轴上表示,另一个在Y轴上表示,与散点图类似,然后计算二维空间中特定区域内的观测数,并用颜色梯度表示。二维密度图有几种类型,以下主要展示二维直方图和Hexbin图的绘图代码。' o2 x% ?% t( T
1 K5 B8 n; P3 ^1 T: X2 o8 \4 W
R语言|绘制二维直方图
/ ?( r* s# w7 t9 |对于2d直方图,plot区域被划分为多个正方形,调用geombin2d()函数,它提供了一个bins参数,用于控制要显示的bins数量。
E; c. d2 x; {2 y, h! t& ?+ q$ i) c; N6 m
1.先绘制基础的散点图;
) ?" o- X6 ?9 v9 A##二维直方图
7 G4 n v+ w1 ?& T$ i/ j$ a# Library
/ Z8 e4 |' ], A4 E+ a$ J. xlibrary(tidyverse)
: P9 f& J. j$ M1 ?3 `library(ggplot2)" {8 w4 a9 _! P# r# F
* O1 f' O( }2 m9 o% c" r+ R/ s4 U e# 读取数据' S2 U7 x2 _* m3 Q$ H- G" j2 c
a <- data.frame( x=rnorm(20000, 10, 1.9), y=rnorm(20000, 10, 1.2) )
# W) G( E2 m2 m' ~' Z2 T& _b <- data.frame( x=rnorm(20000, 14.5, 1.9), y=rnorm(20000, 14.5, 1.9) )- S8 ?2 w5 W* q0 Q
c <- data.frame( x=rnorm(20000, 9.5, 1.9), y=rnorm(20000, 15.5, 1.9) )
j G0 z4 I& K& zdata <- rbind(a,b,c)
. c' T% b8 ]) N- o7 z+ q! y; l& q
0 u" @! D. e* b0 T0 D! F/ W#绘制基础的散点图3 `( P/ ^4 F6 P4 o( o: r/ J/ H4 i
ggplot(data, aes(x=x, y=y) ) +, ?8 {* ^* g" `3 B) R! n) ~' l$ U
geom_point()
9 ]" T3 ^' x/ P8 ~6 p1 f
* \# W8 r/ Q, t& _
5 `: @1 a2 u2 q' K: `. s
$ X4 L$ d1 h, q5 D; `0 l
2.绘制二维直方图。
1 J# E% Z/ Y! K3 p####二维直方图可使用geom_bin2d()函数绘制: a9 A- C. c7 d! A. I
#二维直方图默认选项
& P% }+ e$ ?) w" g0 ~* T7 hggplot(data, aes(x=x, y=y) ) +; f+ _2 N" i3 k/ E' {
geom_bin2d() +
) _ l1 P7 j6 V" ~5 T: C) B theme_bw()
9 E- @3 Z# k7 J" Y1 }1 k( `( g t1 ]- w1 |* x+ `% _# I A
# Bin大小控制与调色板
, h5 i# u- o2 V, n6 |. T% H' oggplot(data, aes(x=x, y=y) ) +
( ]" T8 e. k# |2 C4 @" _: S geom_bin2d(bins = 70) +
3 G& Q, W i- j, i ^, C scale_fill_continuous(type = "viridis") +
0 T7 w' ~5 o) p' I) x- x theme_bw()
3 d0 }! B+ Q/ b5 g
- b+ E" S" ^ ^, Z5 b
' S8 j! Z( W* L( Y
R语言|绘制Hexbin图
当显示大型数据集时,散点图很难解释,因为点不可避免地会被覆盖,并且可能不被单独识别出来。hexbin图中将地块划分为多个六边形,图中阴影部分代替了条形图的高度。图形是通过R的hexbin包绘制的。
4 }( F% H- s: |7 Z5 w1 c# Packages4 U$ v& c+ {$ i1 z
library(hexbin)
2 ?9 f7 G. g3 k9 _$ m" L; m, Olibrary(RColorBrewer)
% m9 ^0 U7 G3 W) `
7 D3 U# j L, f( v6 R# Create data. l2 Z5 D! K& t( t+ q# B) v9 P
x <- rnorm(mean=1.5, 5000)
7 s$ ~$ k' O8 N4 _2 Sy <- rnorm(mean=1.6, 5000)
& w8 F o$ k8 O. g4 G! ^2 a% \) B/ F+ t0 v
# Make the plot
8 j) [+ d; T" O% p5 jbin<-hexbin(x, y, xbins=40)' E6 O( p. A5 D j5 q+ c
my_colors=colorRampPalette(rev(brewer.pal(11,'Spectral')))
7 s, Y2 e; Y9 N* t/ _plot(bin, main="" , colramp=my_colors , legend=F ) ) a& [ T" e# {6 A! `- C

; e: c5 q2 `3 V
C$ b. J/ Y$ l6 v3 `: q! T8 n. D1 k0 X0 u+ \5 V
| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) |
Powered by Discuz! X2.5 |