数学建模社区-数学中国
标题: R语言绘制二维密度图 [打印本页]
作者: 1047521767 时间: 2021-10-29 10:55
标题: R语言绘制二维密度图
R语言绘制二维密度图二维密度图显示了两个数值变量之间的关系,一个在x轴上表示,另一个在Y轴上表示,与散点图类似,然后计算二维空间中特定区域内的观测数,并用颜色梯度表示。二维密度图有几种类型,以下主要展示二维直方图和Hexbin图的绘图代码。 ]* Z0 \* ?7 ~
) I* b/ E6 ]/ L5 j, p5 y) gR语言|绘制二维直方图# U' ?) X( O, \1 M1 ?) \
对于2d直方图,plot区域被划分为多个正方形,调用geombin2d()函数,它提供了一个bins参数,用于控制要显示的bins数量。% e0 A9 b# O+ x; B. c
7 K2 ^" M. S. N4 ]! q% r
1.先绘制基础的散点图;
! @* z9 Q! p3 O5 x##二维直方图. D8 F. O1 t! c& e% y
# Library
4 ?5 j4 ?+ u& Q8 L3 U. w& e% llibrary(tidyverse)) l' _/ W' W9 S, O
library(ggplot2)
+ I0 i/ y* Z0 ^ G' ]6 d: ] K S" b9 `. \( T
# 读取数据
) D3 D" H# i+ V. K+ ^( v! Xa <- data.frame( x=rnorm(20000, 10, 1.9), y=rnorm(20000, 10, 1.2) )* w0 X/ C5 w9 q2 j, k$ k5 }# ?% _' ?
b <- data.frame( x=rnorm(20000, 14.5, 1.9), y=rnorm(20000, 14.5, 1.9) )8 A: [5 d! G8 q2 Y$ U8 O+ Z
c <- data.frame( x=rnorm(20000, 9.5, 1.9), y=rnorm(20000, 15.5, 1.9) )( u% y( ?2 o p2 u9 ~ p3 r
data <- rbind(a,b,c)
9 i( _# U. E7 O/ S# z/ ]! P2 V) | M* c2 K: Z
#绘制基础的散点图$ I, Y. f# @+ g) ^
ggplot(data, aes(x=x, y=y) ) +
; t9 e/ o4 H+ l# X0 ] geom_point()
9 e) D& Q( K" x2 G+ s
& G- h/ q$ y! y- D
4 x, L. C. u' e. U) z
" G: l: M3 A, N+ F! s: i7 _
2.绘制二维直方图。% v7 B$ E( f) x1 S
####二维直方图可使用geom_bin2d()函数绘制4 H+ C8 ?' w! x! e- f% _- n& ~
#二维直方图默认选项+ Z5 |! U! P. T1 g, n+ f* k
ggplot(data, aes(x=x, y=y) ) +
! u! }6 k+ @# W- Q' k. `3 h geom_bin2d() +
* h, z4 j( w6 w theme_bw()
$ X) Y# t7 E) C) D' a) ?, ^4 E, X" |" K# c+ a
# Bin大小控制与调色板
- j" ~# [! E, x9 s( \2 v9 _9 oggplot(data, aes(x=x, y=y) ) +' l* \& D6 t3 s% d1 _% C% K, M
geom_bin2d(bins = 70) +
) ]0 k3 G4 t7 \ scale_fill_continuous(type = "viridis") +$ Z5 X. D! X p/ Y' |. ]- H
theme_bw()9 V, |7 W2 T) W

9 G1 {& L. S! A& a9 ^5 [. M1 k9 E9 A, i
R语言|绘制Hexbin图
当显示大型数据集时,散点图很难解释,因为点不可避免地会被覆盖,并且可能不被单独识别出来。hexbin图中将地块划分为多个六边形,图中阴影部分代替了条形图的高度。图形是通过R的hexbin包绘制的。
4 L4 A: c1 q9 B6 m7 g# Packages' q" Y8 l! y9 v( t& S- \
library(hexbin)+ t0 E6 H% E. Y: t$ f3 t" _ Z S
library(RColorBrewer) * ~0 u' J" `; ~0 i, ]7 f( {! X
* h4 k, ~/ H$ H8 p. G
# Create data' S4 w8 a* t3 ], _
x <- rnorm(mean=1.5, 5000)
# v3 X( L1 O* G. ?7 z5 yy <- rnorm(mean=1.6, 5000)
- L6 S5 F2 @) ^0 L" \9 X: \; B, u$ @8 Y% h6 B. X) [! n+ H4 D
# Make the plot
4 w8 G) B5 V( d( f7 ^6 Lbin<-hexbin(x, y, xbins=40)) d$ Q* V1 c! T( o( O
my_colors=colorRampPalette(rev(brewer.pal(11,'Spectral')))+ z) V, m4 u! J' X$ o. Z# W8 [) R
plot(bin, main="" , colramp=my_colors , legend=F )
# B& f6 ~8 i( o5 J% E% h8 a" i! w
7 T: b( l' D- c: }* R6 u/ Z7 `4 ~. H! s. }( K
% i; P6 P2 y3 o7 |, V9 ~8 V
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) |
Powered by Discuz! X2.5 |