300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > ggplot2添加标签 注释 更改主题 图例 保存

ggplot2添加标签 注释 更改主题 图例 保存

时间:2018-09-07 16:50:59

相关推荐

ggplot2添加标签 注释 更改主题 图例 保存

在R的绘图中加入数学公式或者希腊字符

ggplot2实现一页多图的三种方法

如何用R绘制椭圆

ggplot2标题居中及换行

绘制GIF动图

ggplot2添加标签、注释、更改主题、图例、保存

一、标签1.添加图形主标题2.添加副标题3.添加x轴和y轴的标题4.如果标题是数学公式怎么办?5. 散点图点形状的的参数6.线图`geom_line(lty=)`的参数二、添加注释1.注释2.使用ggrepel包避免数据标签的重叠三、在原本的图形中添加直线四、调整坐标轴的刻度五、调整图例六、主题七、图片的保存1.保存图片保存图片2.如果显示不了中文

一、标签

以r语言自带的数据包mpg为例,mpg包含了由美国环境保护协会收集的38种车型的观测数据。

要想将探索性图形转换为解释性图形,最容易的方法就是加上一些合适的标签。我们可以使用labs()函数来添加标签,以下示例为图形添加了一个标题

1.添加图形主标题

ggplot(mpg,aes(displ,hwy))+geom_point(aes(color=class))+geom_smooth(se=F)+labs(title = paste("Fuel efficiency generally decreases with","engine size"))

其中paste函数是的作用是,把中间的逗号去掉,比如

这样就添加了主标题

2.添加副标题

• subtitle可以在标题下以更小的字体添加更多附加信息。

• caption可以在图形右下角添加文本,常用于描述数据来源:

ggplot(mpg,aes(displ,hwy))+geom_point(aes(color=class))+geom_smooth(se=F)+labs(title = paste("Fuel efficiency generally decreases with","engine size"),subtitle=" 这是副标题",caption="统计局")

3.添加x轴和y轴的标题

ggplot(mpg,aes(displ,hwy))+geom_point(aes(color=class))+geom_smooth(se=F)+labs(x="这是x轴",y="这是y轴")

4.如果标题是数学公式怎么办?

ggplot(c,aes(a,b))+geom_point()+labs(x=quote(x[i]),y=quote(x[i]^2))

5. 散点图点形状的的参数

geom_point(shape=15)#等于15就是正方形

6.线图geom_line(lty=)的参数

lty=2就是虚线

二、添加注释

1.注释

先使用dplyr选取出每类汽车中效率最高的型号,然后在图形中标记出来:

best<- mpg %>% group_by(class) %>% filter(row_number(desc(hwy)) == 1)

ggplot(mpg, aes(displ, hwy)) + geom_point(aes(color = class)) + geom_label( aes(label = model), data=best, nudge_y = 2, alpha = 0.5 )

这样就添加了标签,但是观察发现,这些数据标签还有重复的地方,下面使用ggrepel包避免数据的重叠

2.使用ggrepel包避免数据标签的重叠

先下载这个包

install.packages("ggrepel")library(ggrepel)

只需要把geom_label改为geom_label_repel

ggplot(mpg, aes(displ, hwy)) + geom_point(aes(color = class)) + geom_label_repel( aes(label = model), data=best , nudge_y = 2, alpha = 0.5 )

这样就完成啦!

三、在原本的图形中添加直线

• 可以使用geom_hline()和geom_vline()函数添加参考线。我们经常使用加粗(size = 2)和白色(color = white)的直线作为参考线,并将它们绘制在基本数据层的下面。这样的参考线既清晰可见,又不至于喧宾夺主,影响我们查看数据。

以那个函数y=x2y=x^2y=x2为例

geom_hline(yintercept=10),添加一条横线,y=10

geom_vline(xintercept=8),添加一条竖线,x=8

geom_abline(slope=2,intercept=3).添加y=2x+3y=2x+3y=2x+3这条线

a<-c(1:10);b<-a*ac<-data.frame(a,b)ggplot(c,aes(a,b))+geom_point()+labs(x=quote(x[i]),y=quote(x[i]^2))+geom_hline(yintercept=15,size=2)+geom_vline(xintercept = 8,color=2)+geom_abline(slope=2,intercept=3)

这里size的值越大,添加的线条越粗

color的参数可以自己设置

四、调整坐标轴的刻度

从上面那张图可以看到,y轴是从0开始的,每个网格的间隔是12.5,现在我想让y从1开始,间隔为5

a<-c(1:10);b<-a*ac<-data.frame(a,b)ggplot(c,aes(a,b))+geom_point()+labs(x=quote(x[i]),y=quote(x[i]^2))+scale_y_continuous(breaks = seq(1,100,5))

其中seq(x,y,z)是是产生一个从x开始,间隔为z,小于等于y的向量,因为间隔可能不能整除z

如果也想更改x坐标轴的刻度,那还是一样的操作

a<-c(1:10);b<-a*ac<-data.frame(a,b)ggplot(c,aes(a,b,color=))+geom_point()+labs(x=quote(x[i]),y=quote(x[i]^2))+scale_y_continuous(breaks = seq(1,100,5))+scale_x_continuous(breaks = seq(1,10,2))

五、调整图例

如何把图例调到自己想要的位置呢?

这就需要theme(legend.position=“位置”),位置这里可以选择下面四个:

bottom放在底部,top放在顶部,right放在左面,right放在右面(默认)

当然你也可以选择legend.positon = "none"来取消整个图例的显示。

a<-c(1:10);b<-a*ac<-data.frame(a,b)ggplot(c,aes(a,b,color=a))+geom_point()+labs(x=quote(x[i]),y=quote(x[i]^2))+theme(legend.position = "bottom")

bottom放在底部,top放在顶部,right放在左面,right放在右面(默认)

六、主题

theme_bw()可以更改图片的主题

a<-c(1:10);b<-a*ac<-data.frame(a,b)ggplot(c,aes(a,b,color=a))+geom_point()+labs(x=quote(x[i]),y=quote(x[i]^2))+theme_bw()

除此之外,你还可以在ggthemes扩展包里找到更多标题

https://jrnold.github.io/ggthemes/

比如:

library(ggthemes)a<-c(1:10);b<-a*ac<-data.frame(a,b)ggplot(c,aes(a,b,color=a))+geom_point()+labs(x=quote(x[i]),y=quote(x[i]^2))+theme_economist()

其他的可以在我的这篇文章里找到

R语言ggplot2更改主题

七、图片的保存

1.保存图片保存图片

需要用到ggsave

ggsave("1.pdf")

这样就把图片保存到了你的工作目录里

2.如果显示不了中文

这时就需要用到showtext包

只需要这么三行代码(如果你已经下载了的话)

library(showtext)font_add("STKAITI","C:/windows/Font/STKAITI.ttf")showtext_auto()#自动调用showtext

STKAITI是我想使用的字体,后面是我的工作路径

如果你在使用Rmarkdown

控制图形大小的选项主要有5个:fig.width、fig.height、fig.asp、out.width和out.height

• 我们发现,宽度一致的图形是最令人赏心悦目的。为了使图形宽度保持一致,我们设置图形的默认参数为fig.width = 6(6英寸)和fig.asp = 0.618(黄金分割)。在单个代码段中,我们只调整fig.asp

• 我们使用out.width控制输出图形的大小,并将其设置为行宽的百分比。默认设置为out.width = "70%"和fig.align = "center"。这样一来,图形既不会占用过多空间,也不会显得太拥挤

• 如果想在一行中放置多个图形,可以将out.width设置为50%以放置2个图形、设置为33%以放置3个图形,或者设置为25%以放置4个图形,同时还要设置fig.align = "default"。按照具体的说明方式(例如,是要展示数据还是要展示图形),我们也会根据情况调整fig.width,后面还会继续讨论这点。

如果你发现必须眯起眼睛才能看清图形上的文本,那么就需要调整fig.width参数。如果fig.width大于最终文档中的图形的尺寸,那么文本就会显得过小;如果fig.width小于最终文档中的图形的尺寸,那么文本就会显得过大。一般来说,你需要试验几次才能找到fig.width和最终文档中的图形的最佳比例。

本文来源

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。