小果带你认识R数据可视化之ggplot坐标系(二)






小果带你认识R数据可视化之ggplot坐标系(二)

小师妹  生信果  2024-02-06 19:00:45

小果在前面的文章中简单的介绍了一下六种常见坐标系和coord_cartesian函数与coord_fixed函数,今天小果将继续带大家探索坐标轴的其他函数。在这之前小果还是先强烈推荐一下自己的工具平台

(http://www.biocloudservice.com/home.html),

那么接下来就跟随着小果的步伐往下看吧。
 

         
1. 笛卡尔坐标系
 

1.1 coord_flip函数
 

coord_flip()是ggplot2中的一个函数,用于交换x轴和y轴的位置,从而实现坐标轴的翻转。使用coord_flip()函数时,只需将其应用于ggplot对象即可。它会自动交换x轴和y轴,并相应地更改图形的显示。coord_flip()函数在需要将分类变量显示为水平条形图或需要更改坐标轴的方向时非常有用。它可以提供更灵活的数据可视化选项,使得图形更易于理解和解读。
下面小果找几组例子帮助大家理解:
首先我们来看直方图:
> h <- ggplot(diamonds, aes(carat)) ++   geom_histogram()> h1 <- h + coord_flip()> h2 <- h + coord_flip() + scale_x_reverse()        > plot_grid(h, h1, h2, labels = LETTERS[1:3], nrow = 3) 
        
接下来我们再看面积图:
> df <- data.frame(x = 1:8, y = (1:8) ^ 2)> p1 <- ggplot(df, aes(x, y)) ++   geom_area()> p2 <- p1 + coord_flip()> plot_grid(p1, p2, labels = LETTERS[1:2], nrow = 2)
          

1.2 coord_trans函数
 

coord_trans()函数是ggplot2中的一个函数,用于在坐标系中应用坐标变换。它可以用于对坐标轴的刻度进行转换,从而改变数据的展示方式。使用coord_trans()函数时,可以指定要应用的坐标变换方法。常见的坐标变换方法包括对数变换(log10)、反正弦变换(asin)、双对数变换(log2)等。coord_trans()函数在需要对坐标轴的刻度进行变换时非常有用。它可以帮助我们更好地展示和解读具有广泛数值范围的数据,从而提供更准确的数据可视化。
下面我们来比较一下 ggplot2 中的三种转换方式:
> dsamp <- diamonds[sample(nrow(diamonds), 800),]> p1 <- ggplot(dsamp, aes(log10(carat), log10(price))) ++   geom_point()        > p2 <- ggplot(dsamp, aes(carat, price)) ++   geom_point() ++   scale_x_log10() ++   scale_y_log10()> p3 <- ggplot(dsamp, aes(carat, price)) ++   geom_point() ++   coord_trans(x = "log10", y = "log10")> plot_grid(p1, p2, p3, labels = LETTERS[1:3], nrow = 3) 
坐标轴变换与标度函数变换是有区别的,标度函数的变换发生在统计计算之前,而坐标轴变换是发生在统计计算之后。
> d <- subset(diamonds, carat > 0.6)> p1 <- ggplot(d, aes(carat, price)) ++   geom_point() ++   geom_smooth(method = "lm") ++   scale_x_log10() ++   scale_y_log10()> p2 <- ggplot(d, aes(carat, price)) ++   geom_point() ++   geom_smooth(method = "lm") ++   coord_trans(x = "log10", y = "log10")> plot_grid(p1, p2, labels = LETTERS[1:2], nrow = 2)           
然后我们就可以组合标度函数和坐标变换来进行逆变换了。
> p1 <- ggplot(dsamp, aes(carat, price)) ++   geom_point() ++   geom_smooth(method = "lm")> p2 <- ggplot(dsamp, aes(carat, price)) ++   geom_point() ++   geom_smooth(method = "lm") ++   scale_x_log10() ++   scale_y_log10() ++   coord_trans(x = scales::exp_trans(10), y = scales::exp_trans(10))> plot_grid(p1, p2, labels = LETTERS[1:2], nrow = 2)          
 

2. 极坐标系
 

极坐标系(Polar coordinates)是一种二维坐标系,用于表示平面上的点。它使用极径(r)和极角(θ)来描述点的位置,而不是直角坐标系中的x和y坐标。在ggplot2中,可以使用coord_polar()函数来创建极坐标系的图形。使用极坐标系可以有效地展示圆形或环形数据。它在展示周期性数据、展示比例关系或在需要突出显示数据中心时非常有用。         
小果还是用举例的方式进行介绍吧:
我们下来绘制两个简单的饼图。
> pie <- ggplot(mtcars, aes(x = factor(1), fill = factor(cyl))) ++   geom_bar(width = 1)> p1 <- pie + coord_polar(theta = "y")        > cxc <- ggplot(mtcars, aes(x = factor(cyl))) ++   geom_bar(width = 1, colour = "white")> p2 <- cxc + coord_polar()> plot_grid(pie, p1, cxc, p2, labels = LETTERS[1:4], nrow = 2)  
 
   
我们来将它们变换为角度的轴。
> p3 <- cxc + coord_polar(theta = "y")> p4 <- pie + coord_polar()> plot_grid(p3, p4, labels = LETTERS[1:2], nrow = 1)
我们还可以绘制百分比图。
> df <- data.frame(+   variable = c("xiao guo", "sheng xin"),+   value = c(75, 25)+ )> ggplot(df, aes(x = "", y = value, fill = variable)) ++   geom_col(width = 1) ++   scale_fill_manual(values = c("purple", "green")) ++   coord_polar("y", start = pi / 3) ++   labs(title = "XiaoGuo")
          
那么到这里小果对坐标系的介绍就全部结束啦,小伙伴们是否收获颇多呢,要记得随时关注小果的其他文章哦,最后提醒小伙伴们一定记得要关注小果的工具平台呀
(http://www.biocloudservice.com/home.html),
有任何问题欢迎随时与小果交流沟通哦。   

小果还提供思路设计、定制生信分析、文献思路复现;有需要的小伙伴欢迎直接扫码咨询小果,竭诚为您的科研助力!


定制生信分析

服务器租赁

扫码咨询小果


往期回顾

01

1024G存储的生信服务器,两人成团,1人免单!

02

单个数据库用腻了?多数据库“组合拳”带你打开免疫浸润新思路!

03

孟德尔随机化的准备工作,GWAS数据的网站下载方法

04

跟着小果学复现-手把手带你拿下IF=46.9Nature 级别的主成分分析(PCA)图!!