百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

私人笔记分享——《R数据可视化手册》最精妙绝伦的总结(下)

bigegpt 2024-08-05 11:51 8 浏览

我们继续来看看接下来的内容!

11.对图形如何进行渐变色的填充?

如下图所示,随着数值越大,颜色越发蓝色。但这种颜色不是我们喜欢的类型,如何更改呢?

 ggplot(heightweight,aes(ageYear,heightIn,fill=weightLb))+
   geom_point(shape=21,size=3)


这里,我们使用scale_fill_gradient()函数将颜色区间变成从蓝色到红色

 ggplot(heightweight,aes(ageYear,heightIn,fill=weightLb))+
   geom_point(shape=21,size=3)+
   scale_fill_gradient(low = "blue",high = "red")


12.如何绘制双图形——点图+箱线图?

如果我们想要左边展示数据点,右边想要展示箱线图,如何展示呢?下面给出了解答。

 ggplot(heightweight,aes(sex,heightIn))+
   geom_boxplot(aes(as.numeric(sex)-0.2,group=sex),width=.25)+
   geom_dotplot(aes(as.numeric(sex)+0.2,group=sex),
                binaxis = "y",binwidth = 0.5,stackdir = "center")+
   scale_x_continuous(breaks = 1:nlevels(heightweight$sex),
                      labels = levels(heightweight$sex))


13.X和Y轴如何交换呢?

在绘图的时候,有时需要交换x和y轴,如何做呢?直接使用coord_flip()函数,交换坐标轴即可。

 ggplot(PlantGrowth,aes(group,weight))+
   geom_boxplot()+
   coord_flip()


14.坐标轴如何翻转呢?或者颠倒顺序?

假设我们需要将x或者y坐标轴进行翻转或者颠倒顺序,该怎么做呢?

 ggplot(PlantGrowth,aes(group,weight))+
   geom_boxplot()+
   scale_x_discrete(limits=rev(levels(PlantGrowth$group)))


15.上述坐标轴翻转,是针对因子型x轴进行翻转,那么如果是连续型的y坐标轴呢?

连续型坐标轴的翻转如何做?

 ggplot(PlantGrowth,aes(group,weight))+
   geom_boxplot()+
   scale_y_reverse()


或者使用下面的办法也行,通过调整y轴的范围进行逆转

 ggplot(PlantGrowth,aes(group,weight))+
   geom_boxplot()+
   ylim(6.5,3.5)


16.坐标轴的范围以及间距如何调整?

想要设置坐标轴的间距和范围如何设置?

通过使用scale_x_continuous(breaks=seq())来设置,0(起点),420(终点),30(间距)

 library(gcookbook)
 ggplot(marathon,aes(Half,Full))+
   geom_point()+
   scale_x_continuous(breaks = seq(0,420,10))+
   scale_y_continuous(breaks = seq(0,420,30))


17.绘图中增加文字,太长了如何换行?

在绘图中,我们使用的文字太长了,如何进行换行展示呢?如下所示

 library(gcookbook)
 ggplot(marathon,aes(Half,Full))+
   geom_point()+
   scale_x_continuous(breaks = seq(0,420,10))+
   scale_y_continuous(breaks = seq(0,420,30))+
   xlab("看这里,没错,这就是x轴!")


使用换行符(\n)进行换行:在标签中使用\n进行断行即可

 library(gcookbook)
 ggplot(marathon,aes(Half,Full))+
   geom_point()+
   scale_x_continuous(breaks = seq(0,420,10))+
   scale_y_continuous(breaks = seq(0,420,30))+
   xlab("看这里,没错,\n这就是x轴!")


18.如何使得X和Y的起点重合在一起?

在x和y轴加粗后,起点位置会间断,无法重合,如下所示

 ggplot(marathon,aes(Half,Full))+
   geom_point()+
   theme(axis.line = element_line(colour = "red",size=5))


我们在主题中增加语法lineend="square",使其重合

 ggplot(marathon,aes(Half,Full))+
   geom_point()+
   theme(axis.line = element_line(colour = "red",size=5,lineend = "square"))


19.想把柱状图变成一幅环形图,如何做?

柱状图如何快速变成环形图?

 ggplot(mtcars,aes(mpg,fill=factor(cyl)))+
   geom_histogram(binwidth=1)


使用coord_polar()快速变换即可

 ggplot(mtcars,aes(mpg,fill=factor(cyl)))+
   geom_histogram(binwidth=1)+
   coord_polar()


20.控制主题元素和文本集合对象的参数都有什么?

主题元素

文本几何对象

说明

family

family

Helvetica(无衬线),Times(衬线),Courier(等宽)

face

fontface

plain(普通),bold(粗体),italic(斜体),bold.italic(粗斜体)

colour

colour

文本颜色

size

size

字体大小

hjust

hjust

横向对齐:0=左对齐,0.5=居中,1=右对齐

vjust

vjust

纵向对齐:0=底部对齐,0.5=居中,1=顶部对齐

angle

angle

旋转角度,单位为度

lineheight

lineheight

行间距倍数


21.如何移除图例?

一幅图的图例,有时候会不需要,如何移除?如下所示

 ggplot(PlantGrowth,aes(group,weight,fill=group))+
   geom_boxplot()


使用下列语法进行移除即可

  • guides(fill=FALSE)
  • scale_fill_discrete(guide=FALSE)
  • theme(legend.position="none")

三种方式均可以达到相同的效果

 ggplot(PlantGrowth,aes(group,weight,fill=group))+
   geom_boxplot()+
   guides(fill=FALSE)
 ggplot(PlantGrowth,aes(group,weight,fill=group))+
   geom_boxplot()+
   scale_fill_discrete(guide=FALSE)
 ggplot(PlantGrowth,aes(group,weight,fill=group))+
   geom_boxplot()+
   theme(legend.position = "none")


22.调整Legend

如何对Legend的位置,背景,边框和顺序进行调整。

  • 使用legend.position=c()进行指定Legend在图中的绘制
  • 使用legend.background=element_blank()对Legend的背景进行调整
  • 使用legend.key=element_blank()可以将多余的边框进行删除
  • 使用scale_fill_discrete(limits=c(" ", "", ""))可以进行三个标签的顺序调整
  • 使用labs(fill=" ")对Legend进行命名
 ggplot(PlantGrowth,aes(group,weight,fill=group))+
   geom_boxplot()+
   theme(legend.position = c(.85,.2),
         legend.background = element_blank(),
         legend.key = element_blank())+
   scale_fill_discrete(limits=c("trt1","trt2","ctrl"))+
   labs(fill="这里是Legend")


23.想用颜色,R语言中如何查看?

安装加载RColorBrewer包,如下图,左边为色带的名称,右边为颜色带

 library(RColorBrewer)
 display.brewer.all()

24.数据相差太大,怎么把?

在绘制谱系图或者热图时,如果数据相差太大导致一部分数据被压缩,可以使用scale()函数进行数据标准化

使用mtcars举例,标准化之前


使用scale()标准化之后

 scale(mtcars)


25.绘图完成,如何保存图片?

  • 适用于任何绘图:比如png图,那就是png("XX.png")+绘图+dev.off()
 pdf("箱线图.pdf",width=4,height=4)
 ggplot(PlantGrowth,aes(group,weight,fill=group))+
   geom_boxplot()
 dev.off()
  • 适用于ggplot包

直接在最后使用ggsave()进行保存即可,仅对最后一张图生效

 ggplot(PlantGrowth,aes(group,weight,fill=group))+
   geom_boxplot()
 ggsave("xiangxiantu.png")
  • 其他图片格式包括:tiff,svg,wmf,jpg等均可

赶紧来学习吧!

相关推荐

Go语言泛型-泛型约束与实践(go1.7泛型)

来源:械说在Go语言中,Go泛型-泛型约束与实践部分主要探讨如何定义和使用泛型约束(Constraints),以及如何在实际开发中利用泛型进行更灵活的编程。以下是详细内容:一、什么是泛型约束?**泛型...

golang总结(golang实战教程)

基础部分Go语言有哪些优势?1简单易学:语法简洁,减少了代码的冗余。高效并发:内置强大的goroutine和channel,使并发编程更加高效且易于管理。内存管理:拥有自动垃圾回收机制,减少内...

Go 官宣:新版 Protobuf API(go pro版本)

原文作者:JoeTsai,DamienNeil和HerbieOng原文链接:https://blog.golang.org/a-new-go-api-for-protocol-buffer...

Golang开发的一些注意事项(一)(golang入门项目)

1.channel关闭后读的问题当channel关闭之后再去读取它,虽然不会引发panic,但会直接得到零值,而且ok的值为false。packagemainimport"...

golang 托盘菜单应用及打开系统默认浏览器

之前看到一个应用,用go语言编写,说是某某程序的windows图形化客户端,体验一下发现只是一个托盘,然后托盘菜单的控制面板功能直接打开本地浏览器访问程序启动的webserver网页完成gui相关功...

golang标准库每日一库之 io/ioutil

一、核心函数概览函数作用描述替代方案(Go1.16+)ioutil.ReadFile(filename)一次性读取整个文件内容(返回[]byte)os.ReadFileioutil.WriteFi...

文件类型更改器——GoLang 中的 CLI 工具

我是如何为一项琐碎的工作任务创建一个简单的工具的,你也可以上周我开始玩GoLang,它是一种由Google制作的类C编译语言,非常轻量和快速,事实上它经常在Techempower的基准测...

Go (Golang) 中的 Channels 简介(golang channel长度和容量)

这篇文章重点介绍Channels(通道)在Go中的工作方式,以及如何在代码中使用它们。在Go中,Channels是一种编程结构,它允许我们在代码的不同部分之间移动数据,通常来自不同的goro...

Golang引入泛型:Go将Interface「」替换为“Any”

现在Go将拥有泛型:Go将Interface{}替换为“Any”,这是一个类型别名:typeany=interface{}这会引入了泛型作好准备,实际上,带有泛型的Go1.18Beta...

一文带你看懂Golang最新特性(golang2.0特性)

作者:腾讯PCG代码委员会经过十余年的迭代,Go语言逐渐成为云计算时代主流的编程语言。下到云计算基础设施,上到微服务,越来越多的流行产品使用Go语言编写。可见其影响力已经非常强大。一、Go语言发展历史...

Go 每日一库之 java 转 go 遇到 Apollo?让 agollo 来平滑迁移

以下文章来源于GoOfficialBlog,作者GoOfficialBlogIntroductionagollo是Apollo的Golang客户端Apollo(阿波罗)是携程框架部门研...

Golang使用grpc详解(golang gcc)

gRPC是Google开源的一种高性能、跨语言的远程过程调用(RPC)框架,它使用ProtocolBuffers作为序列化工具,支持多种编程语言,如C++,Java,Python,Go等。gR...

Etcd服务注册与发现封装实现--golang

服务注册register.gopackageregisterimport("fmt""time"etcd3"github.com/cor...

Golang:将日志以Json格式输出到Kafka

在上一篇文章中我实现了一个支持Debug、Info、Error等多个级别的日志库,并将日志写到了磁盘文件中,代码比较简单,适合练手。有兴趣的可以通过这个链接前往:https://github.com/...

如何从 PHP 过渡到 Golang?(php转golang)

我是PHP开发者,转Go两个月了吧,记录一下使用Golang怎么一步步开发新项目。本着有坑填坑,有错改错的宗旨,从零开始,开始学习。因为我司没有专门的Golang大牛,所以我也只能一步步自己去...