R语言绘图:绘制横向柱状图

代码主要实现: 对数据进行排序,并且相同分组的数据会有相同的颜色。最后,绘制横向柱状图。

r 复制代码
# 加载ggplot2包
library(ggplot2)

# 示例数据,假设有三列:Group, Variable, Value
data <- data.frame(
  Group = factor(c('A', 'B', 'A', 'C', 'B', 'C', 'A', 'B', 'C')),
  Variable = c('Var10', 'Var12', 'Var23', 'Var54', 'Var15', 'Var76', 'Var27', 'Var38', 'Var19'),
  Value = c(5, 3, 6, 2, 8, 7, 4, 1, 9)
)

# 按Value排序,确保绘图时按值大小顺序排列
data <- data[order(data$Value),]

# 更新Variable为按Value排序的因子,确保绘图时Y轴按Value的大小顺序排列
data$Variable <- factor(data$Variable, levels = unique(data$Variable))

data$Group <- factor(data$Group,
                       levels = c('A', 'B', 'C'),
                       labels = c('climate', 'topography', 'Soil'))


# 绘制横向柱状图
ggplot(data, aes(x = Variable, y = Value, fill = Group)) + 
  geom_bar(stat = "identity", position = "dodge") +
  coord_flip() +  # 使柱状图横向显示
  theme_minimal() +  # 使用简洁的主题
  scale_fill_brewer(palette = "Set1") +  # 根据分组使用不同颜色
  labs(x = "Variable", y = "Value", title = "按Value大小顺序排列的横向柱状图", fill = "Group")+
  theme(
    text = element_text(size = 14, family = "serif"),
    axis.ticks.length = unit(0.2, "cm"),  # 设置刻度线的长度
    axis.ticks = element_line(size = 1),  # 设置刻度线的粗细
    plot.title = element_text(size = 14, colour = "black", hjust = 0.5),
    axis.title.y = element_text(size = 14, color = "black", vjust = 1.9, hjust = 0.5, angle = 90),
    legend.title = element_text(color = "black", size = 14),
    legend.text = element_text(color = "black", size = 14),
    axis.text.x = element_text(size = 14, color = "black", vjust = 0.5, hjust = 0.5, angle = 0),
    axis.text.y = element_text(size = 14, color = "black", vjust = 0.5, hjust = 1, angle = 0),
    panel.border = element_rect(color = "black", size = 1, fill = NA),
    # panel.grid.major = element_blank(),
    # panel.grid.minor = element_blank(),
    axis.line = element_line(colour = "black", size = 2),
    axis.line.x = element_line(colour = "black", size = 0),
    axis.line.y = element_line(colour = "black", size = 0)
  )

结果展示:

相关推荐
必须得开心呀2 小时前
python编写带界面的软件,需要安装哪些插件
开发语言·python
计算机编程指导师3 小时前
【计算机毕设推荐】基于Hadoop+Spark的公共交通运营数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·数据分析·spark·交通
沫璃染墨4 小时前
《Qt从零入门系列(十三):QSS样式表详解——从选择器与层叠规则到控件美化实战》
开发语言·css·c++·qt·ui·qt6.3·qss
达子6664 小时前
RUST 图解 第 3 章:通用编程概念(Common Programming Concepts)
开发语言·算法·rust
道尔柯南5 小时前
C++ 面向对象编程入门:类和对象(上)
开发语言·c++·算法
楠楠子呀5 小时前
英语、西语、阿语客户各开一个口:多语言获客的分流方案
开发语言·javascript·ecmascript·跨境电商·whatsapp·营销工具
tachibana25 小时前
使用for range 的时候,它的地址会发生变化吗?
开发语言·后端·golang·go·语法
临床数据科学和人工智能兴趣组6 小时前
正则表达式的基础语法的基本符号
开发语言·人工智能·python·正则表达式·r语言·r语言-4.2.1·workbudyy
王中阳Go6 小时前
Go 后端转 AI:非科班怎么补?一张 3 列路线表(可保存)
开发语言·人工智能·后端·python·golang·大语言模型
计算机编程指导师6 小时前
【计算机毕设选题推荐】基于Hadoop的宫颈癌变进程光谱数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·数据分析·spark·毕业设计·宫颈癌变