当前位置: 首页 > news >正文

R语言绘图-5-条形图(修改坐标轴以及图例等)

0. 说明:

1. 绘制条形图;
2. 添加文本并调整位置;
3. 调整x轴刻度的字体、角度及颜色;
4. 在导出pdf时,如果没有字体,该怎么解决问题;

1. 结果:

在这里插入图片描述

2. 代码:

library(ggplot2)
library(hrbrthemes)
library(sysfonts) ## 添加字体
library(showtext) ## 显示字体#font_add("Times New Roman", "/Users/zzy/fonts_R/Times_new_roman_bold.ttf") ## 手动添加字体 (字体名称,字体包路径)
pdf("/Users/zzy/Desktop/linshi.pdf", width = 6, height = 5) # 打开图形设备
showtext_begin() dt = data.frame(category = c("A", "B", "C", "D", "E", "F", "G", "H","I","J","K","L","M","N","O","P","Q"),value = c(10, -20, 15, 25, 30, 20, -10, 30,20, 5, -50,-10, 10, 3, 3, 2, -5),groups = c("pos","pos","pos","neg","neg","pos","neg","pos","pos","pos","pos","neg","pos","pos","neg","neg","pos"),text = c("*","","","","**","","","***","","","*","*","","*","*","",""))## 指定特定的顺序
dt$category = factor(dt$category, levels = c("D", "E", "F", "G", "H", "A", "B", "C","I","J","K","N","O","P","Q","L","M"))
## 添加调整位置的列
pos_list = c()
for (v in dt$value){if (v>0){pos_list = c(pos_list, 0.5)}else{pos_list = c(pos_list, 1)}
}
dt$pos_list = pos_list## 添加颜色列
dt$diycolor = c(rep("red",8), rep("blue", 3), rep("green", 6))## 绘图
ggplot(data=dt, aes(x=category, y=value, fill=groups))+geom_bar(stat = "identity")+ ## 绘制条形图,stat使用identity,显示原始数据geom_text(aes(label=text), color="black", size=8, vjust=dt$pos_list) + ## 添加并调整星号的位置scale_fill_manual(values = c("red", "blue"))+ylab("Value")+theme_classic()+theme(axis.text.x = element_text(angle=45, hjust = 1, vjust=1, color=dt$diycolor), ## 调整 x 坐标轴刻度,旋转,并分组赋予颜色axis.text = element_text(size=15, face ="bold"),  ## x和y坐标轴刻度字体调整axis.title.x = element_blank(), ## 不显示x坐标轴标题axis.title.y = element_text(size=15, face="bold"),legend.position = "none") ## 不显示图例showtext_end() 
dev.off()
http://www.lryc.cn/news/216290.html

相关文章:

  • uniapp自定义权限菜单,动态tabbar
  • ubuntu20.04配置解压版mysql5.7
  • 【js】vue获取document.getElementById(a)为null
  • 系列六、Mybatis的一级缓存
  • 用中文编程工具给澳大利亚客户定制开发的英文版服装进销存软件应用实例
  • geoserver 的跨域问题怎么解决
  • SQL语法实践(一)
  • 路由器如何设置IP地址
  • 自动驾驶算法(一):Dijkstra算法讲解与代码实现
  • MS5910PA为行业内领先的可配置10bit到16bit分辨率的旋变数字转换器,可替代AD2S1210
  • Random指定随机种子遇到的坑
  • 2023云栖大会:属于开发者的狂欢
  • jsp 网上订餐Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • 优化大表分页查询性能:大表LIMIT 1000000, 10该怎么优化?
  • ubuntu PX4 vscode stlink debug设置
  • Flask的一种启动方式和三种托管方式
  • cudnn too short
  • 01、SpringBoot + MyBaits-Plus 集成微信支付 -->项目搭建
  • Linux 性能调优之网络优化
  • RT-Thread系统使用常见问题处理记录
  • 优先队列----数据结构
  • nginx项目部署教程
  • 资源限流 + 本地分布式多重锁——高并发性能挡板,隔绝无效流量请求
  • day52【子序列】300.最长递归子序列 674.最长连续递增序列 718.最长重复子数组
  • 计算机视觉 计算机视觉识别是什么?
  • Make.com实现多个APP应用的自动化的入门指南
  • LLMs之HFKR:HFKR(基于大语言模型实现异构知识融合的推荐算法)的简介、原理、性能、实现步骤、案例应用之详细攻略
  • 多模态 多引擎 超融合 新生态!2023亚信科技AntDB数据库8.0产品发布
  • elasticsearch无法访问9200端口
  • 【Linux】进程等待