该内容已被发布者删除 该内容被自由微信恢复
文章于 3月30日 下午 7:50 被检测为删除。
查看原文
被用户删除
其他

R语言绘图 | 简单画个圆堆图

小陈的R语言笔记 小陈的R语言笔記 2024-03-30

欢迎关注小陈的R语言笔记

介绍一下使用packcircles包绘制圆堆图,使用的代码都做了注释。

安装和加载R包

#安装R包
install.packages("packcircles")

# 加载R包  
library(packcircles)  # 加载packcircles包,用于创建圆形布局  
library(ggplot2)      # 加载ggplot2包,用于绘图  
library(packcircles)  # 加载packcircles包,用于配色

创建数据

# 创建数据  
data <- data.frame(group=paste(letters[1:20]), value=sample(seq(1,100),20))   
# 创建一个数据框,其中有两列:group(组名,由字母a到t组成)和value(随机从1到100中抽取的20个值)  

# 生成布局。此函数返回一个数据框,每行代表一个气泡。它给出了气泡的中心(x和y)和半径,与value成比例  
packing <- circleProgressiveLayout(data$value, sizetype='area')  

# 将这些布局信息添加到初始数据框中  
data <- cbind(data, packing)  

# 检查半径是否与value成比例。我们不希望是线性关系,因为面积必须与value成比例  
# plot(data$radius, data$value)  # 这行代码被注释掉了,但可以用来检查半径和值之间的关系  

# 下一步是从一个中心和一个半径到由多条直线绘制的圆的坐标。  
dat.gg <- circleLayoutVertices(packing, npoints=50)  
# 使用circleLayoutVertices函数,为每个气泡生成50个点的坐标

绘图

# 绘图  
ggplot() +   
  
  # 创建气泡  
  geom_polygon(data = dat.gg, aes(x, y, group = id, fill=as.factor(id)), colour = "black", alpha = 0.6) +  
  # 使用geom_polygon函数,根据dat.gg数据框中的x和y坐标绘制多边形(即气泡),并为每个气泡指定填充颜色(由id决定)  
  
  # 在每个气泡的中心添加文本,并控制其大小  
  geom_text(data = data, aes(x, y, size=value, label = group)) +  
  scale_size_continuous(range = c(1,4)) +  # 设置文本大小的连续比例尺,范围从1到4  
  
  # 通用主题设置:  
  theme_void() +  # 使用theme_void函数设置空白主题  
  theme(legend.position="none") +  # 移除图例  
  coord_equal()  # 设置坐标轴比例相等,确保气泡不会变形

美化

# 自定义颜色方案  
custom_colors <- terrain.colors(n = length(unique(data$group)))  

# 开始绘图  
ggplot() +     
  
  # 创建气泡,使用dat.gg数据集中的x和y坐标,通过id分组,并用id的因子填充颜色  
  geom_polygon(data = dat.gg, aes(x, y, group = id, fill = as.factor(id)),     
               # 设置气泡边框颜色为黑色  
               colour = "black",   
               # 设置气泡填充颜色的透明度为0.6  
               alpha = 0.6,   
               # 设置气泡边框粗细为0.1  
               size = 0.1) +    
  
  # 使用自定义颜色方案设置气泡填充颜色  
  scale_fill_manual(values = custom_colors) +    
  
  # 在气泡中心添加文本标签,文本内容为group字段  
  geom_text(data = data, aes(x, y, label = group), size = 3.5) +      
  
  # 设置绘图主题为简洁主题  
  theme_minimal() +      
  
  # 进一步自定义主题  
  theme(    
    # 移除坐标轴标题  
    axis.title = element_blank(),      
    # 移除坐标轴刻度文本  
    axis.text = element_blank(),       
    # 移除坐标轴刻度线  
    axis.ticks = element_blank(),      
    # 移除图例  
    legend.position = "none",          
    # 移除网格线  
    panel.grid = element_blank(),      
    # 移除面板背景色  
    panel.background = element_blank()    
  ) +    
  
  # 设置坐标轴比例为固定比例,确保气泡形状不会变形  
  coord_fixed()
#设置颜色
custom_colors <- c(  
  "#E69F00""#56B4E9""#009E73""#F0E442""#0072B2",  
  "#D55E00""#CC79A7""#F6BD16""#999999""#B22234",  
  "#D53E4F""#564E51""#9CC6D9""#756BB1""#3498DB",  
  "#9B59B6""#34495E""#16A085""#2ECC71""#F39C12"  
)  

# 美化绘图  
ggplot() +  
  
  # 创建气泡,使用dat.gg数据集中的x和y坐标,通过id分组,并用id的因子填充颜色  
  geom_polygon(data = dat.gg, aes(x, y, group = id, fill = as.factor(id)),     
               # 设置气泡边框颜色为黑色  
               colour = "black",   
               # 设置气泡填充颜色的透明度为0.6  
               alpha = 0.6,   
               # 设置气泡边框粗细为0.1  
               size = 0.1) +     
  
  # 使用自定义颜色方案设置气泡填充颜色  
  scale_fill_manual(values = custom_colors) +    
  
  # 在气泡中心添加文本标签,文本内容为group字段  
  geom_text(data = data, aes(x, y, label = group), size = 3.5) +      
  
  # 设置绘图主题为简洁主题  
  theme_minimal() +      
  
  # 进一步自定义主题  
  theme(    
    # 移除坐标轴标题  
    axis.title = element_blank(),      
    # 移除坐标轴刻度文本  
    axis.text = element_blank(),       
    # 移除坐标轴刻度线  
    axis.ticks = element_blank(),      
    # 移除图例  
    legend.position = "none",          
    # 移除网格线  
    panel.grid = element_blank(),      
    # 移除面板背景色  
    panel.background = element_blank()    
  ) +    
  
  # 设置坐标轴比例为固定比例,确保气泡形状不会变形  
  coord_fixed()

欢迎加入交流群



继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存