R语言 绘制每边有两个Y轴和不同刻度的ggplot2图

R语言 绘制每边有两个Y轴和不同刻度的ggplot2图

有很多数据都有不止一个单位,如 温度、压力、人的高度 等。我们希望在一个基本图中使用一个以上的单位来表示这些数据,因为其他用户可能不熟悉你在图中提供的单位。这样他们就很难从图中进行分析。在这种情况下,我们需要在两个轴上有不同的刻度。因此,如果两个轴之间有比例关系,就可以使用双轴。这就是所谓的 缩放系数

例如,一个y轴上的距离可以是 英里 ,另一个轴上的距离可以是 公里 ,因为可能有一些人不习惯用 英里 来测量距离

在这篇文章中,我们将通过一个合适的例子来看看如何使用R编程语言中的ggplot2条形图在两边添加两个不同比例的垂直轴。

安装

首先,如果之前没有在R Studio中安装ggplot2包,你需要安装它。为了安装和加载,在R控制台中写下以下命令。

install.packages("ggplot2")
library(ggplot2)

创建条形图

为了创建一个简单的柱状图,我们将使用函数 geom_bar()

语法: geom_bar(stat, fill, color, width)

参数 :

  • stat : 设置stat参数以确定模式。
  • fill : 代表条形图内部的颜色。
  • color : 代表条形图轮廓的颜色。
  • width : 代表条形图的宽度。

例子: 考虑一个数据集,其中包括一个班级中五个不同学生的身高信息。数据集中给出的身高是以英尺为单位。因此,我们需要两个Y轴来表示使用 “英尺 “和 “厘米 “单位的高度

首先,我们创建一个数据框,其中有两个向量 “stud”,包含学生的ID和 “height”,包含学生的身高(英尺),并将其存储在一个变量 “height “中。

# Inserting data
height <- data.frame(stud=c("S-1","S-2","S-3",
                            "S-4","S-5"),
                       
                    hght=c(4.7, 5.5, 4.9, 6.1,
                           6.4))
  
head(height)

输出

在R中绘制每边有两个Y轴和不同刻度的ggplot2图

条形图

# Bar Plot
library(ggplot2)
  
  
plt <-ggplot(data=height, aes(x=stud, y=hght,fill=stud)) +
  geom_bar(stat="identity")+
  theme_classic()
  
plt

输出

在R中绘制每边有两个Y轴和不同刻度的ggplot2图

在两边添加两个Y轴

由于缩放的问题,我们必须使用 ggplot2包中 的R函数 scale_y_continuous( ) 。另外,另一个函数 sec_axis( ) 被用来添加一个次要的轴并为其分配规格。语法是 :

sec_axis(trans,name,breaks,labels,guide)

我们需要的参数

trans : 需要转换的公式或函数。
name : 二级轴的名称。

现在,为了将英尺刻度转换为厘米刻度,我们需要比例系数。要转换,请使用:

1 feet = 30.48 cm

现在,在sec_axis( )内部的 trans 参数中使用上述比例因子值,并写出如下的转换公式。

# Making two Y axes
plt+scale_y_continuous(
  "feet",sec.axis=sec_axis(~.*30.48,name="centi meter"))

输出

在R中绘制每边有两个Y轴和不同刻度的ggplot2图

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程