通过 R 中相应变量的名称标记 x 轴和 y 轴
Posted
技术标签:
【中文标题】通过 R 中相应变量的名称标记 x 轴和 y 轴【英文标题】:Labelling x- and y-axis by the corresponding variable's name in R 【发布时间】:2022-01-09 21:50:54 【问题描述】:起初这听起来像是一个非常微不足道的问题,但到目前为止没有人能够帮助我,因此我正在与大家联系。
我想做以下事情:
我正在编写一个简单的函数,它允许我将两个变量相互绘制,第三个变量为观察点着色(取决于颜色变量的相应值)。代码如下:
scatterplot <- function(data_used, x.variable, y.variable, color.variable)
ggplot(data_used, aes(x=x.variable, y = y.variable)) +
geom_point(aes_string(color = color.variable))
scatterplot(data_used = example_data, x.variable = example_data$education,
y.variable = example_data$wages,
color.variable = example_data$sex)
我现在想要 R 做的是用我决定绘制的相应变量的名称(分别)标记 x 轴和 y 轴。在此示例中,x 轴为“教育”,y 轴为“工资”。
我试图简单地输入+ labs (x = x.variable, y = y.variable)
,但它不起作用(这样做时,R 通过变量值标记轴!)。默认情况下,R 仅将轴命名为“x.variable”和“y.variable”。
有人可以帮助我实现我想做的事情吗?
最好的问候,
xifrix
【问题讨论】:
您能否使用dput(example_data)
与我们分享您的数据,以便我们尝试重现您的情节。
【参考方案1】:
jpenzer 的回答很好。这里没有准引用的东西。
scatterplot <- function(data_used, x.variable, y.variable, color.variable)
ggplot(data_used, aes_string(x=x.variable, y = y.variable)) +
geom_point(aes_string(color = color.variable)) +
labs(x=x.variable, y=y.variable, colour=color.variable)
mtcars %>%
mutate(am = as.factor(am)) %>%
scatterplot(., x.variable = "hp",
y.variable = "mpg",
color.variable = "am")
【讨论】:
嗨,戴夫,非常感谢您的帮助,代码有效。我真的很感谢你在这方面帮助我。我是否正确,我的代码的主要区别是将我的颜色变量重新编码为因子对象(换句话说,“变异”部分是关键部分吗?如果您可以为您的代码提供简短的口头直觉,那会很棒的。 如果color.variable
不是一个因素,那么您将获得一个色带而不是两个不同的标记点。获得输出并不重要,但在这种情况下它确实使输出看起来更好。【参考方案2】:
事后看来,我不确定准引用的东西是 100% 必要的,但这是我用于类似需求的模式:
my_scatterplot <- function(data, x, y)
.x = rlang::enquo(x)
.y = rlang::enquo(y)
data %>%
ggplot(aes(x = x, y = y))+
geom_point()+
labs(x = .x,
y = .y)
如果它不适合你,请告诉我,但它应该。编辑:应该在 DaveArmstrong 的回答之后添加,该函数将在不带引号的情况下调用 x / y 变量,例如
diamonds %>% my_scatterplot(price, table)
【讨论】:
您好,也非常感谢您,尽管我认为您的代码是(至少对我而言!)最不直观的代码。尽管如此,它仍然有效,因此我感谢您抽出宝贵时间为我提供一些见解。【参考方案3】:要在函数中传递列名,您可以在函数体中的所需列名周围使用双花括号 ...
:
library(dplyr)
library(ggplot2)
scatterplot <- function(data_used, x.variable, y.variable, color.variable)
ggplot(data_used, aes_string(x.variable, y.variable)) +
geom_point(aes_string(color = color.variable)) +
labs(x=x.variable, y=y.variable, colour=color.variable)
scatterplot(mtcars %>% mutate(am = as.factor(am)), x.variable = "mpg",
y.variable = "hp",
color.variable = "am")
【讨论】:
您好 TarJae,您的回答与 Dave 的回答非常相似。这也有效,而且看起来更简单,因为您将 mutate-operator 实现到告诉函数要绘制什么的代码行中(这行代码是否有特定术语,即我在哪里确定函数的输入? )。也非常感谢您的帮助,您真是太好了。以上是关于通过 R 中相应变量的名称标记 x 轴和 y 轴的主要内容,如果未能解决你的问题,请参考以下文章
在 Chart.js 中设置图表标题、x 轴和 y 轴的名称?
R语言ggplot2包和lattice包可视化改变x轴和y轴的显示位置实战
如何使用R中的绘图功能更改散点图中x轴和y轴标签的字体大小和颜色?
r 将多个ggplot2图与一个共同的x轴和不同的y轴对齐,每个轴都有不同的y轴标签。
R语言ggplot2可视化时间序列散点图X轴和Y轴都是时间信息使用labels参数在scale_y_datetime函数中自定义指定Y轴时间信息轴标签刻度显示的格式