【超详细】R语言实现各种数据可视化

文章目录

  • 1 主成分分析可视化结果
    • 1.1 查看莺尾花数据集(前五行,前四列)
    • 1.2 使用莺尾花数据集进行主成分分析后可视化展示
  • 2 圆环图绘制
  • 3 马赛克图绘制
    • 3.1 构造数据
    • 3.2 ggplot2包的geom_rect()函数绘制马赛克图
    • 3.3 vcd包的mosaic()函数绘制马赛克图
    • 3.4 graphics包的mosaicplot()函数绘制马赛克图
  • 4 棒棒糖图绘制
    • 4.1 查看内置示例数据
    • 4.2 绘制基础棒棒糖图(使用ggplot2)
      • 4.2.1 更改点的大小,形状,颜色和透明度
      • 4.2.2 更改辅助线段的大小,颜色和类型
      • 4.2.3 对点进行排序,坐标轴翻转
    • 4.3 绘制棒棒糖图(使用ggpubr)
      • 4.3.1 使用ggdotchart函数绘制棒棒糖图
      • 4.3.2 自定义一些参数
  • 5 三相元图绘制
    • 5.1 构建数据
      • 5.1.1 R-ggtern包绘制三相元图
      • 5.1.2 优化处理
  • 6 华夫饼图绘制
    • 6.1 数据准备
      • 6.1.1 ggplot 包绘制
      • 6.1.2 点状华夫饼图ggplot绘制
      • 6.1.3 堆积型华夫饼图
      • 6.1.4 waffle 包绘制(一个好用的包,专为华夫饼图做准备的)
  • 7 三维散点图绘制
    • 7.1 简单绘制
    • 7.2 加入第四个变量,进行颜色分组
      • 7.2.1 方法一
      • 7.2.2 方法二
    • 7.3 用rgl包的plot3d()进行绘制


1 主成分分析可视化结果

1.1 查看莺尾花数据集(前五行,前四列)

iris[1:5,-5]
##   Sepal.Length Sepal.Width Petal.Length Petal.Width
## 1          5.1         3.5          1.4         0.2
## 2          4.9         3.0          1.4         0.2
## 3          4.7         3.2          1.3         0.2
## 4          4.6         3.1          1.5         0.2
## 5          5.0         3.6          1.4         0.2

1.2 使用莺尾花数据集进行主成分分析后可视化展示

library("ggplot2")
library("ggbiplot")
## 载入需要的程辑包:plyr
## 载入需要的程辑包:scales
## 载入需要的程辑包:grid
res.pca = prcomp(iris[,-5],scale=TRUE)
ggbiplot(res.pca,obs.scale=1,var.scale=1,ellipse=TRUE,circle=TRUE)

在这里插入图片描述

#添加组别颜色
ggbiplot(res.pca,obs.scale=1,var.scale=1,ellipse=TRUE,circle=TRUE,groups=iris$Species)

在这里插入图片描述

#更改绘制主题
ggbiplot(res.pca, obs.scale = 1, var.scale = 1, ellipse = TRUE,groups = iris$Species, circle = TRUE) +theme_bw() +theme(panel.grid = element_blank()) +scale_color_brewer(palette = "Set2") +labs(title = "新主题",subtitle = "好看吗!",caption ="绘于:桂林")

在这里插入图片描述

2 圆环图绘制

#构造数据
df <- data.frame(group = c("Male", "Female", "Child"),value = c(10, 20, 30))
#ggpubr包绘制圆环图
library("ggpubr")
## 
## 载入程辑包:'ggpubr'
## The following object is masked from 'package:plyr':
## 
##     mutate
ggdonutchart(df, "value",label = "group",                               fill = "group",                            color = "white",                                palette = c("#00AFBB", "#E7B800", "#FC4E07") 
)

在这里插入图片描述

3 马赛克图绘制

3.1 构造数据

library(ggplot2)
library(RColorBrewer)
library(reshape2)  #提供melt()函数
library(plyr)      #提供ddply()函数,join()函数df <- data.frame(segment = c("A", "B", "C","D"),Alpha = c(2400    ,1200,  600 ,250),Beta = c(1000 ,900,   600,    250),Gamma = c(400,    600 ,400,   250),Delta = c(200,    300 ,400,   250))melt_df<-melt(df,id="segment")
df
##   segment Alpha Beta Gamma Delta
## 1       A  2400 1000   400   200
## 2       B  1200  900   600   300
## 3       C   600  600   400   400
## 4       D   250  250   250   250
#计算出每行的最大,最小值,并计算每行各数的百分比。ddply()对data.frame分组计算,并利用join()函数进行两个表格连接。
segpct<-rowSums(df[,2:ncol(df)])
for (i in 1:nrow(df)){for (j in 2:ncol(df)){df[i,j]<-df[i,j]/segpct[i]*100  #将数字转换成百分比}
}segpct<-segpct/sum(segpct)*100
df$xmax <- cumsum(segpct)
df$xmin <- (df$xmax - segpct)dfm <- melt(df, id = c("segment", "xmin", "xmax"),value.name="percentage")
colnames(dfm)[ncol(dfm)]<-"percentage"#ddply()函数使用自定义统计函数,对data.frame分组计算
dfm1 <- ddply(dfm, .(segment), transform, ymax = cumsum(percentage))
dfm1 <- ddply(dfm1, .(segment), transform,ymin = ymax - percentage)
dfm1$xtext <- with(dfm1, xmin + (xmax - xmin)/2)
dfm1$ytext <- with(dfm1, ymin + (ymax - ymin)/2)#join()函数,连接两个表格data.frame
dfm2<-join(melt_df, dfm1, by = c("segment", "variable"), type = "left", match = "all")
dfm2
##    segment variable value xmin xmax percentage ymax ymin xtext ytext
## 1        A    Alpha  2400    0   40         60   60    0    20  30.0
## 2        B    Alpha  1200   40   70         40   40    0    55  20.0
## 3        C    Alpha   600   70   90         30   30    0    80  15.0
## 4        D    Alpha   250   90  100         25   25    0    95  12.5
## 5        A     Beta  1000    0   40         25   85   60    20  72.5
## 6        B     Beta   900   40   70         30   70   40    55  55.0
## 7        C     Beta   600   70   90         30   60   30    80  45.0
## 8        D     Beta   250   90  100         25   50   25    95  37.5
## 9        A    Gamma   400    0   40         10   95   85    20  90.0
## 10       B    Gamma   600   40   70         20   90   70    55  80.0
## 11       C    Gamma   400   70   90         20   80   60    80  70.0
## 12       D    Gamma   250   90  100         25   75   50    95  62.5
## 13       A    Delta   200    0   40          5  100   95    20  97.5
## 14       B    Delta   300   40   70         10  100   90    55  95.0
## 15       C    Delta   400   70   90         20  100   80    80  90.0
## 16       D    Delta   250   90  100         25  100   75    95  87.5

3.2 ggplot2包的geom_rect()函数绘制马赛克图

ggplot()+geom_rect(aes(ymin = ymin, ymax = ymax, xmin = xmin, xmax = xmax, fill = variable),dfm2,colour = "black") +geom_text(aes(x = xtext, y = ytext,  label = value),dfm2 ,size = 4)+geom_text(aes(x = xtext, y = 103, label = paste("Seg ", segment)),dfm2 ,size = 4)+geom_text(aes(x = 102, y = seq(12.5,100,25), label = c("Alpha","Beta","Gamma","Delta")), size = 4,hjust = 0)+scale_x_continuous(breaks=seq(0,100,25),limits=c(0,110))+theme(panel.background=element_rect(fill="white",colour=NA),panel.grid.major = element_line(colour = "grey60",size=.25,linetype ="dotted" ),panel.grid.minor = element_line(colour = "grey60",size=.25,linetype ="dotted" ),text=element_text(size=15),legend.position="none")

在这里插入图片描述

3.3 vcd包的mosaic()函数绘制马赛克图

library(vcd)
table<-xtabs(value ~variable+segment, melt_df)
mosaic( ~segment+variable,table,shade=TRUE,legend=TRUE,color=TRUE)

包的mosaic()函数绘制马赛克图

library(vcd)
table<-xtabs(value ~variable+segment, melt_df)
mosaic( ~segment+variable,table,shade=TRUE,legend=TRUE,color=TRUE)

在这里插入图片描述

3.4 graphics包的mosaicplot()函数绘制马赛克图

library(graphics)
library(wesanderson) #颜色提取
mosaicplot( ~segment+variable,table, color = wes_palette("GrandBudapest1"),main = '')

4 棒棒糖图绘制

4.1 查看内置示例数据

library(ggplot2)
data("mtcars")
df <- mtcars
# 转换为因子
df$cyl <- as.factor(df$cyl)
df$name <- rownames(df)
head(df)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
##                                name
## Mazda RX4                 Mazda RX4
## Mazda RX4 Wag         Mazda RX4 Wag
## Datsun 710               Datsun 710
## Hornet 4 Drive       Hornet 4 Drive
## Hornet Sportabout Hornet Sportabout
## Valiant                     Valiant

4.2 绘制基础棒棒糖图(使用ggplot2)

ggplot(df,aes(name,mpg)) + # 添加散点geom_point(size=5) + # 添加辅助线段geom_segment(aes(x=name,xend=name,y=0,yend=mpg))

在这里插入图片描述

4.2.1 更改点的大小,形状,颜色和透明度

ggplot(df,aes(name,mpg)) + # 添加散点geom_point(size=5, color="red", fill=alpha("orange", 0.3), alpha=0.7, shape=21, stroke=3) + # 添加辅助线段geom_segment(aes(x=name,xend=name,y=0,yend=mpg)) +theme_bw() + theme(axis.text.x = element_text(angle = 45,hjust = 1),panel.grid = element_blank())

在这里插入图片描述

4.2.2 更改辅助线段的大小,颜色和类型

ggplot(df,aes(name,mpg)) + # 添加散点geom_point(aes(size=cyl,color=cyl)) + # 添加辅助线段geom_segment(aes(x=name,xend=name,y=0,yend=mpg),size=1, color="blue", linetype="dotdash") +theme_classic() + theme(axis.text.x = element_text(angle = 45,hjust = 1),panel.grid = element_blank()) +scale_y_continuous(expand = c(0,0))
## Warning: Using size for a discrete variable is not advised.

在这里插入图片描述

4.2.3 对点进行排序,坐标轴翻转

df <- df[order(df$mpg),]
# 设置因子进行排序
df$name <- factor(df$name,levels = df$name)ggplot(df,aes(name,mpg)) + # 添加散点geom_point(aes(color=cyl),size=8) + # 添加辅助线段geom_segment(aes(x=name,xend=name,y=0,yend=mpg),size=1, color="gray") +theme_minimal() + theme(panel.grid.major.y = element_blank(),panel.border = element_blank(),axis.ticks.y = element_blank()) +coord_flip()

在这里插入图片描述

4.3 绘制棒棒糖图(使用ggpubr)

library(ggpubr)
# 查看示例数据
head(df)
##                      mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Cadillac Fleetwood  10.4   8  472 205 2.93 5.250 17.98  0  0    3    4
## Lincoln Continental 10.4   8  460 215 3.00 5.424 17.82  0  0    3    4
## Camaro Z28          13.3   8  350 245 3.73 3.840 15.41  0  0    3    4
## Duster 360          14.3   8  360 245 3.21 3.570 15.84  0  0    3    4
## Chrysler Imperial   14.7   8  440 230 3.23 5.345 17.42  0  0    3    4
## Maserati Bora       15.0   8  301 335 3.54 3.570 14.60  0  1    5    8
##                                    name
## Cadillac Fleetwood   Cadillac Fleetwood
## Lincoln Continental Lincoln Continental
## Camaro Z28                   Camaro Z28
## Duster 360                   Duster 360
## Chrysler Imperial     Chrysler Imperial
## Maserati Bora             Maserati Bora

4.3.1 使用ggdotchart函数绘制棒棒糖图

ggdotchart(df, x = "name", y = "mpg",color = "cyl", # 设置按照cyl填充颜色size = 6, # 设置点的大小palette = c("#00AFBB", "#E7B800", "#FC4E07"), # 修改颜色画板sorting = "ascending", # 设置升序排序                        add = "segments", # 添加辅助线段add.params = list(color = "lightgray", size = 1.5), # 设置辅助线段的大小和颜色ggtheme = theme_pubr(), # 设置主题
)

在这里插入图片描述

4.3.2 自定义一些参数

ggdotchart(df, x = "name", y = "mpg",color = "cyl", # 设置按照cyl填充颜色size = 8, # 设置点的大小palette = "jco", # 修改颜色画板sorting = "descending", # 设置降序排序                        add = "segments", # 添加辅助线段add.params = list(color = "lightgray", size = 1.2), # 设置辅助线段的大小和颜色rotate = TRUE, # 旋转坐标轴方向group = "cyl", # 设置按照cyl进行分组label = "mpg", # 按mpg添加label标签font.label = list(color = "white", size = 7, vjust = 0.5), # 设置label标签的字体颜色和大小ggtheme = theme_pubclean(), # 设置主题
)

在这里插入图片描述

5 三相元图绘制

5.1 构建数据

test_data = data.frame(x = runif(100),y = runif(100),z = runif(100))
head(test_data)
##            x         y          z
## 1 0.79555379 0.1121278 0.90667083
## 2 0.12816648 0.8980756 0.51703604
## 3 0.66631357 0.5757205 0.50830765
## 4 0.87326608 0.2336119 0.05895517
## 5 0.01087468 0.7611424 0.37542833
## 6 0.77126494 0.2682030 0.49992176

5.1.1 R-ggtern包绘制三相元图

library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v tibble  3.1.3     v dplyr   1.0.7
## v tidyr   1.1.3     v stringr 1.4.0
## v readr   2.0.1     v forcats 0.5.1
## v purrr   0.3.4
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::arrange()    masks plyr::arrange()
## x readr::col_factor() masks scales::col_factor()
## x purrr::compact()    masks plyr::compact()
## x dplyr::count()      masks plyr::count()
## x purrr::discard()    masks scales::discard()
## x dplyr::failwith()   masks plyr::failwith()
## x dplyr::filter()     masks stats::filter()
## x dplyr::id()         masks plyr::id()
## x dplyr::lag()        masks stats::lag()
## x dplyr::mutate()     masks ggpubr::mutate(), plyr::mutate()
## x dplyr::rename()     masks plyr::rename()
## x dplyr::summarise()  masks plyr::summarise()
## x dplyr::summarize()  masks plyr::summarize()
library(ggtern)
## Registered S3 methods overwritten by 'ggtern':
##   method           from   
##   grid.draw.ggplot ggplot2
##   plot.ggplot      ggplot2
##   print.ggplot     ggplot2
## --
## Remember to cite, run citation(package = 'ggtern') for further info.
## --
## 
## 载入程辑包:'ggtern'
## The following objects are masked from 'package:ggplot2':
## 
##     aes, annotate, ggplot, ggplot_build, ggplot_gtable, ggplotGrob,
##     ggsave, layer_data, theme_bw, theme_classic, theme_dark,
##     theme_gray, theme_light, theme_linedraw, theme_minimal, theme_void
library(hrbrthemes)
## NOTE: Either Arial Narrow or Roboto Condensed fonts are required to use these themes.
##       Please use hrbrthemes::import_roboto_condensed() to install Roboto Condensed and
##       if Arial Narrow is not on your system, please see https://bit.ly/arialnarrow
library(ggtext)test_plot_pir <- ggtern(data = test_data,aes(x, y, z))+geom_point(size=2.5)+theme_rgbw(base_family = "") +labs(x="",y="",title = "Example Density/Contour Plot: <span style='color:#D20F26'>GGtern Test</span>",subtitle = "processed map charts with <span style='color:#1A73E8'>ggtern()</span>",caption = "Visualization by <span style='color:#DD6449'>DataCharm</span>") +guides(color = "none", fill = "none", alpha = "none")+theme(plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",size = 20, margin = margin(t = 1, b = 12)),plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),plot.caption = element_markdown(face = 'bold',size = 12),)
test_plot_pir

在这里插入图片描述

5.1.2 优化处理

test_plot <- ggtern(data = test_data,aes(x, y, z),size=2)+stat_density_tern(geom = 'polygon',n = 300,aes(fill  = ..level..,alpha = ..level..))+geom_point(size=2.5)+theme_rgbw(base_family = "") +labs(x="",y="",title = "Example Density/Contour Plot: <span style='color:#D20F26'>GGtern Test</span>",subtitle = "processed map charts with <span style='color:#1A73E8'>ggtern()</span>",caption = "Visualization by <span style='color:#DD6449'>DataCharm</span>") +scale_fill_gradient(low = "blue",high = "red")  +#去除映射属性的图例guides(color = "none", fill = "none", alpha = "none")+ theme(plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",size = 20, margin = margin(t = 1, b = 12)),plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),plot.caption = element_markdown(face = 'bold',size = 12),)
test_plot
## Warning: stat_density_tern: You have not specified a below-detection-limit (bdl) value (Ref. 'bdl' and 'bdl.val' arguments in ?stat_density_tern). Presently you have 2x value/s below a detection limit of 0.010, which acounts for 2.000% of your data. Density values at fringes may appear abnormally high attributed to the mathematics of the ILR transformation. 
## You can either:
## 1. Ignore this warning,
## 2. Set the bdl value appropriately so that fringe values are omitted from the ILR calculation, or
## 3. Accept the high density values if they exist, and manually set the 'breaks' argument 
##    so that the countours at lower densities are represented appropriately.

在这里插入图片描述

6 华夫饼图绘制

6.1 数据准备

#相关包
library(ggplot2)
library(RColorBrewer)
library(reshape2)
#数据生成
nrows <- 10
categ_table <- round(table(mpg$class ) * ((nrows*nrows)/(length(mpg$class))))
sort_table<-sort(categ_table,index.return=TRUE,decreasing = FALSE)
Order<-sort(as.data.frame(categ_table)$Freq,index.return=TRUE,decreasing = FALSE)
df <- expand.grid(y = 1:nrows, x = 1:nrows)
df$category<-factor(rep(names(sort_table),sort_table), levels=names(sort_table))
Color<-brewer.pal(length(sort_table), "Set2")
head(df)
##   y x category
## 1 1 1  2seater
## 2 2 1  2seater
## 3 3 1  minivan
## 4 4 1  minivan
## 5 5 1  minivan
## 6 6 1  minivan

6.1.1 ggplot 包绘制

ggplot(df, aes(x = y, y = x, fill = category)) +
geom_tile(color = "white", size = 0.25) +
#geom_point(color = "black",shape=1,size=5) +
coord_fixed(ratio = 1)+ #x,y 轴尺寸固定, ratio=1 表示 x , y 轴长度相同
scale_x_continuous(trans = 'reverse') +#expand = c(0, 0),
scale_y_continuous(trans = 'reverse') +#expand = c(0, 0),
scale_fill_manual(name = "Category",
#labels = names(sort_table),
values = Color)+
theme(#panel.border = element_rect(fill=NA,size = 2),
panel.background = element_blank(),
plot.title = element_text(size = rel(1.2)),
axis.text = element_blank(),
axis.title = element_blank(),
axis.ticks = element_blank(),
legend.title = element_blank(),
legend.position = "right")
## Coordinate system already present. Adding new coordinate system, which will replace the existing one.

在这里插入图片描述

6.1.2 点状华夫饼图ggplot绘制

library(ggforce)
ggplot(df, aes(x0 = y, y0 = x, fill = category,r=0.5)) +geom_circle(color = "black", size = 0.25) +#geom_point(color = "black",shape=21,size=6) +coord_fixed(ratio = 1)+scale_x_continuous(trans = 'reverse') +#expand = c(0, 0),scale_y_continuous(trans = 'reverse') +#expand = c(0, 0),scale_fill_manual(name = "Category",#labels = names(sort_table),values = Color)+theme(#panel.border = element_rect(fill=NA,size = 2),panel.background  = element_blank(),plot.title = element_text(size = rel(1.2)),legend.position = "right")
## Coordinate system already present. Adding new coordinate system, which will replace the existing one.

在这里插入图片描述

6.1.3 堆积型华夫饼图

library(dplyr)
nrows <- 10
ndeep <- 10
unit<-100
df <- expand.grid(y = 1:nrows, x = 1:nrows)categ_table <- as.data.frame(table(mpg$class) * (nrows*nrows))
colnames(categ_table)<-c("names","vals")
categ_table<-arrange(categ_table,desc(vals))
categ_table$vals<-categ_table$vals /unittb4waffles <- expand.grid(y = 1:ndeep,x = seq_len(ceiling(sum(categ_table$vals) / ndeep)))
regionvec <- as.character(rep(categ_table$names, categ_table$vals))
tb4waffles<-tb4waffles[1:length(regionvec),]tb4waffles$names <- factor(regionvec,levels=categ_table$names)Color<-brewer.pal(nrow(categ_table), "Set2")
ggplot(tb4waffles, aes(x = x, y = y, fill = names)) +#geom_tile(color = "white") + #geom_point(color = "black",shape=21,size=5) + #scale_fill_manual(name = "Category",values = Color)+xlab("1 square = 100")+ylab("")+coord_fixed(ratio = 1)+theme(#panel.border = element_rect(fill=NA,size = 2),panel.background  = element_blank(),plot.title = element_text(size = rel(1.2)),#axis.text = element_blank(),#axis.title = element_blank(),#axis.ticks = element_blank(),# legend.title = element_blank(),legend.position = "right")
## Coordinate system already present. Adding new coordinate system, which will replace the existing one.

在这里插入图片描述

6.1.4 waffle 包绘制(一个好用的包,专为华夫饼图做准备的)

#waffle(parts, rows = 10, keep = TRUE, xlab = NULL, title = NULL, colors = NA, size = 2, flip = FALSE, reverse = FALSE, equal = TRUE, pad = 0, use_glyph = FALSE, glyph_size = 12, legend_pos = "right")
#parts 用于图表的值的命名向量
#rows 块的行数
#keep 保持因子水平(例如,在华夫饼图中获得一致的图例)
library("waffle")
parts <- c(One=80, Two=30, Three=20, Four=10)
chart <- waffle(parts, rows=8)
print(chart)

在这里插入图片描述

7 三维散点图绘制

7.1 简单绘制

library("plot3D")
#以Sepal.Length为x轴,Sepal.Width为y轴,Petal.Length为z轴。绘制箱子型box = TRUE;旋转角度为theta = 60, phi = 20;透视转换强度的值为3d=3;按照2D图绘制正常刻度ticktype = "detailed";散点图的颜色设置bg="#F57446"
pmar <- par(mar = c(5.1, 4.1, 4.1, 6.1)) #改版画布版式大小
with(iris, scatter3D(x = Sepal.Length, y = Sepal.Width, z = Petal.Length,pch = 21, cex = 1.5,col="black",bg="#F57446",xlab = "Sepal.Length",ylab = "Sepal.Width",zlab = "Petal.Length", ticktype = "detailed",bty = "f",box = TRUE,theta = 60, phi = 20, d=3,colkey = FALSE)
)

在这里插入图片描述

7.2 加入第四个变量,进行颜色分组

7.2.1 方法一

#可以将变量Petal.Width映射到数据点颜色中。该变量是连续性,如果想将数据按从小到大分成n类,则可以使用dplyr包中的ntile()函数,然后依次设置不同组的颜色bg=colormap[iris$quan],并根据映射的数值添加图例颜色条(colkey())。
library(tidyverse)
iris = iris %>% mutate(quan = ntile(Petal.Width,6))
colormap <- colorRampPalette(rev(brewer.pal(11,'RdYlGn')))(6)#legend颜色配置
pmar <- par(mar = c(5.1, 4.1, 4.1, 6.1))
# 绘图
with(iris, scatter3D(x = Sepal.Length, y = Sepal.Width, z = Petal.Length,pch = 21, cex = 1.5,col="black",bg=colormap[iris$quan],xlab = "Sepal.Length",ylab = "Sepal.Width",zlab = "Petal.Length", ticktype = "detailed",bty = "f",box = TRUE,theta = 60, phi = 20, d=3,colkey = FALSE)
)
colkey (col=colormap,clim=range(iris$quan),clab = "Petal.Width", add=TRUE, length=0.4,side = 4)

在这里插入图片描述

7.2.2 方法二

#将第四维数据映射到数据点的大小上(cex = rescale(iris$quan, c(.5, 4)))这里我还“得寸进尺”的将颜色也来反应第四维变量,当然也可以用颜色反应第五维变量。
pmar <- par(mar = c(5.1, 4.1, 4.1, 6.1))
with(iris, scatter3D(x = Sepal.Length, y = Sepal.Width, z = Petal.Length,pch = 21, cex = rescale(iris$quan, c(.5, 4)),col="black",bg=colormap[iris$quan],xlab = "Sepal.Length",ylab = "Sepal.Width",zlab = "Petal.Length", ticktype = "detailed",bty = "f",box = TRUE,theta = 30, phi = 15, d=2,colkey = FALSE)
)
breaks =1:6
legend("right",title =  "Weight",legend=breaks,pch=21,pt.cex=rescale(breaks, c(.5, 4)),y.intersp=1.6,pt.bg = colormap[1:6],bg="white",bty="n")

在这里插入图片描述

7.3 用rgl包的plot3d()进行绘制

library(rgl)
#数据
mycolors <- c('royalblue1', 'darkcyan', 'oldlace')
iris$color <- mycolors[ as.numeric(iris$Species) ]
#绘制
plot3d( x=iris$`Sepal.Length`, y=iris$`Sepal.Width`, z=iris$`Petal.Length`, col = iris$color, type = 's', radius = .1,xlab="Sepal Length", ylab="Sepal Width", zlab="Petal Length")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/68307.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

☀️苏州程序大白一文教你学会微信小程序开发☀️《❤️记得收藏❤️》

☀️苏州程序大白一文教你学会微信小程序开发☀️《❤️记得收藏❤️》 目录 &#x1f3f3;️‍&#x1f308;开讲啦&#xff01;&#xff01;&#xff01;&#xff01;&#x1f3f3;️‍&#x1f308;苏州程序大白&#x1f3f3;️‍&#x1f308;&#x1f31f;博主介绍&#x…

老徐讲解小程序与微信第三方平台及微信官方的关系。

小程序服务器关系分析 小程序是微信官方根据前后端完全分离的思想创建的一套自己的前端框架。 后端部分&#xff0c;则一部分交给微信官方提供授权和鉴别身份的官方接口&#xff0c;而主要的业务逻辑接口则交给第三方开发平台完成。 也就是微信提供了单独的一个微信小程序服务…

微信小程序扫码报工案例分享

使用微信小程序结合PC端ERP完成工序扫码报工扫码出入库&#xff0c;可以实现生产管理全流程自动化作业&#xff0c;使生产效率比之前手工操作有了质的飞跃。 本案例背景介绍 这是一家生产二极管的电子生产企业&#xff0c;车间自动化生产设备多&#xff0c;生产连续性强。产品…

小程序获取头像试试水 02《 程序员变现指南之 微信QQ 小程序 真的零基础开发宝典》

本系列教程是针对粉丝的变现教程&#xff0c;还不是粉丝的可以关注我并且到社区&#xff1a;https://bbs.csdn.net/topics/603436232 进行打卡&#xff0c;不是老粉的也可以获取最终的技术变现学习&#xff0c;最终还有详细的变现教程等你来。 前言 《 程序员变现指南之 微信…

llama.cpp Mac版本llama

骆驼.cpp 路线图/宣言/ ggml 纯C/C中LLaMA模型的推理 热点话题&#xff1a; 简单的网络聊天示例&#xff1a;#1998k-quants 现在支持 64 的超级块大小 super-block size of 64:&#xff1a;#2001新路线图&#xff1a; https: //github.com/users/ggerganov/projects/7Azure …

解决老板们的一大难题---如何监管微信聊天

如今&#xff0c;企业越来越希望能够监管员工微信。但是&#xff0c;到底应该监管员工微信的哪些内容呢&#xff1f; 员工在微信上进行的聊天记录、红包转账、删除联系人和聊天记录、消息中涉及敏感词汇、以及客户名片和重要客户名片的发送等行为&#xff0c;老板们都想要掌握…

万达酒店及度假村旗下“万达颐华”品牌第一家直营酒店正式开业

无锡2021年6月28日 /美通社/ -- 无锡万达颐华酒店&#xff0c;位于中国江苏省无锡市中山路218号&#xff0c;是万达酒店及度假村旗下“万达颐华”品牌的第一家直营酒店。无锡万达颐华酒店的前身&#xff0c;是无锡上世纪90年代最著名的高星级酒店 -- 无锡锦江大酒店。随着城市发…

滴滴与万达酒店签署战略合作 将推出会员权益互享

【TechWeb】8月7日消息&#xff0c;滴滴出行与万达酒店及度假村签署战略合作&#xff0c;此次合作将由礼橙专车、滴滴豪华车联合万达酒店&#xff0c;打通出行与酒店领域的资源和服务。在出行服务升级、会员权益互享、品牌联合营销等方面展开深度合作。 以往商旅用户安排行程时…

COMFORT 酒店丨万达酒店及度假村与腾讯微信签署战略合作协议 微信支付分功能酒旅行业率先落地万达酒店

近日&#xff0c;万达酒店及度假村与腾讯微信在北京万达文华酒店签署战略合作协议&#xff0c;双方以微信支付分功能在酒店旅游行业率先落地万达酒店为起点&#xff0c;将在共建“智慧酒店”、探索酒店行业创新场景等方面展开深度合作&#xff0c;致力为宾客提供高品质、“有温…

万达酒店及度假村旗下三大酒店品牌 荣膺迈点年度MBI国内高端酒店十大影响力品牌

中国,北京,2020年7月3日 —— 近日,迈点网、迈点研究院联合数百家全国主流媒体举办的“2019-2020旅游住宿业MBI颁奖盛典暨高峰论坛”在上海隆重召开。万达酒店及度假村旗下万达瑞华、万达文华、万达嘉华三大酒店品牌荣膺“年度旅游住宿业影响力品牌金航奖——MBI(迈点品牌指数)…

为什么说苏宁必买万达百货

在吃下万达百货之后&#xff0c;苏宁易购在全场景智慧零售的探索仍然挑战重重。后者收购前者的逻辑是什么?前者具备哪些可挖掘潜力?后者前者具有哪些想象空间?这都是本次收购行为的主要看点。 不买不行 苏宁易购收购万达百货的背后&#xff0c;或许可以从财报上看出些端倪。…

【报告分享】 2020中国男士美妆市场洞察报告-巨量算数(附下载)

摘要:随着中国新生代男性审美意识的提高&#xff0c;男性护肤意识增强&#xff0c;男士护理成为中国化妆品市场增势明显的品类之一。同时&#xff0c;2020年大批新锐男士护理品牌受到资本市场青睐&#xff0c;并在短视频平台获得爆发式关注&#xff0c;给整个男士美妆市场注入新…

【报告分享】 2020年中国本土及国际美妆护肤品牌及营销现状研究报告-艾瑞咨询(附下载)

摘要:通过定量问卷调研、定性消费者“一对一”深访、定性行业专家“一对一”访谈以及桌面研究四种研究方法&#xff0c;对国内美妆护肤市场的发展和现状进行梳理&#xff0c;并对中国美妆护肤消费者进行洞察研究&#xff0c;旨在了解国内美妆护肤市场营销现状、消费需求特征以及…

【报告分享】 美妆行业营销报告-从“她经济”到“TA经济“-WEIQ(附下载)

摘要:随着社会的发展和进步&#xff0c;女性在社会中的地位得到显著提高&#xff0c;在消费市场的角色也发生改变&#xff0c;渐渐从“奉献型消费”变成“悦己型消费”&#xff0c;“她经济”已然崛起。90后、00后女生年订单量占比过半&#xff0c;成新一代消费者中的主力军&am…

市场营销学数据分析【香奈儿包包在京东上的比价分析】

为了分析香奈儿成功的因素以及香奈儿在市场上的具体销售情况&#xff0c;博主自己写了一个程序用于爬取京东商城香奈儿包包的销售数量&#xff08;包括商品名称&#xff0c;价格&#xff0c;商品成交量&#xff0c;以及商品的店铺名称&#xff09;&#xff0c;然后对商品进行一…

2023年1月至4月天猫平台美妆品类销售数据分析

如今&#xff0c;随着人们消费观念的突破&#xff0c;越来越多的人用美妆来诠释个性表达&#xff0c;美丽经济获得更多关注&#xff0c;化妆品消费理念逐渐增强&#xff0c;因此&#xff0c;美妆市场也形成了较大的规模。 根据鲸参谋电商数据显示&#xff0c;2023年1月至4月&am…

2021年美妆行业发展趋势洞察

2021年美妆行业发展趋势洞察 目录&#xff1a; 美妆行业概况&#xff1b; 美妆人群消费趋势&#xff1b; 美妆营销模式及案例分析&#xff1b; 有赞美妆数据洞察&#xff1b; 美妆行业思考和建议。 Part 1&#xff1a;美妆行业概况 1.1 化妆品行业市场规模 2019年&#xff0…

免费 GPT-4 神器来了,这下我彻底不用写代码了!

前两天在网上看到了一款基于 GPT-4 的新一代辅助编程神器&#xff1a;Cursor&#xff0c;官网介绍说是与 OpenAI 合作的并且基于 GPT-4 模型&#xff08;存疑&#xff09;。 简单概况一下&#xff1a;代码真的不用我们自己写了&#xff0c;一行指令&#xff0c;它就能帮我们把代…

有了chatGPT搞IT的是否要下岗了!看chatGPT怎样写代码!

能给我写一个贪吃蛇游戏代码吗&#xff1f; 当然可以&#xff01;以下是一个简单的贪吃蛇游戏的 Python 代码示例&#xff1a; import pygame import random 游戏窗口大小 WINDOW_WIDTH 800 WINDOW_HEIGHT 600 蛇身和食物大小 CELL_SIZE 20 颜色定义 BLACK (0, 0, …

程序员圈“内卷”这么严重,如何才能更进一步,进入大厂

前言 有没有发现无论是在很多行业都会出现几百人争抢一个岗位的事情发生&#xff0c;公务员不说&#xff0c;像是中石化这些国企的岗位也是争的头破血流。 那it行业呢&#xff1f; 程序员不都是想着进大厂&#xff0c;无论是应届生还是已经工作了好多年的程序员。 一、为什…