📌  相关文章
📜  绘制 ggplot2 图,每边有两个 Y 轴,在 R 中使用不同的比例

📅  最后修改于: 2022-05-13 01:55:30.442000             🧑  作者: Mango

绘制 ggplot2 图,每边有两个 Y 轴,在 R 中使用不同的比例

有许多可用的数据具有多个单位,例如温度、压力、人的身高等。我们希望在基本图中使用多个单位来表示这些数据,因为其他用户可能不熟悉您拥有的单位情节中提供。他们很难从情节中进行分析。在这种情况下,我们需要两个具有不同比例的轴。因此,如果两个轴之间有缩放,则可以使用双轴。这被称为比例因子。

例如,一个Y轴可以在英里的距离和另一个斧头可以在公里的距离,因为有可能是几个人谁不舒服用英里测量距离。

在本文中,我们将通过一个合适的示例,了解如何使用 R 编程语言中的 ggplot2 条形图在具有不同比例的任一侧添加两个垂直轴。

安装

首先,如果之前未在 R Studio 中安装 ggplot2 包,则需要安装它。要安装和加载在 R 控制台中写入以下命令:

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

创建条形图

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



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

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

R
# 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
# Bar Plot
library(ggplot2)
  
  
plt <-ggplot(data=height, aes(x=stud, y=hght,fill=stud)) +
  geom_bar(stat="identity")+
  theme_classic()
  
plt


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


输出:

条形图



电阻

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

输出:

在任一侧添加两个 Y 轴

随着缩放的出现,我们必须使用ggplot2 包中的 R函数scale_y_continuous() 。此外,另一个函数sec_axis()用于添加辅助轴并为其分配规格。语法是:

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

我们需要的参数:

现在,要将英尺尺度转换为厘米尺度,我们需要缩放因子。转换使用:

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"))

输出: