我正在R中编写代码,以使用ggplot获得绘图。为此,我正在运行以下功能:
BasicScatterPlotClassWrapper_b<- function(sample,pivot.var,pivot.title,lab.size,pivot.dot.size,pivot.ylab,pivot.xlab,font.size.x,font.size.y,pivot.lab,variable_y,variable_x) {
sample_w <- sample %>%
select(pivot.var) %>%
drop_na %>%
mutate(y.calc = variable_y) %>%
mutate(x.calc = variable_x)
## GGplot
gg <- ggplot(sample_w, aes(x.calc,y.calc)) +
ggtitle(pivot.title) +
geom_point(aes(colour= ColoursXXX$blue)) +
scale_color_manual(values= ColoursXXX$blue) +
geom_text_repel(aes(x.calc,y.calc, label = ""), size = pivot.lab ,fontface = "bold") +
xlab(pivot.xlab) +
ylab(pivot.ylab) +
scale_y_continuous(labels = scales::percent) +
scale_x_continuous(labels = scales::percent) +
theme(axis.title.y = element_text(face = "bold", size = 9, color="black"),
axis.title.x = element_text(face = "bold", size = 9, color="black"),
axis.text.x=element_text(size = font.size.x, face = "bold",hjust= 0.5),
axis.text.y=element_text(size = font.size.y, face = "bold",hjust= 0.5),
legend.position="none",
panel.background = element_rect(fill = "transparent", colour = NA),
axis.line = element_line(size = 0.2, colour = "black"))
return(gg)
}
如果我用函数的输入替换为其实际值,则可以得到该图。如果我使用特定命令调用该函数以在PPT中导出图,则会出现以下错误:“错误:离散值提供给连续刻度”
输入是以下输入:
openChartPPT(BasicScatterPlotClassWrapper_b(
sample=DF,
pivot.var= c("COV.proj.ratio", "COV.curr.ratio"),
pivot.title="",
lab.size=3,
pivot.dot.size=2,
pivot.ylab="bla bla",
pivot.xlab="bla bla bla",
font.size.x=7,
font.size.y=7,
pivot.lab=2,
variable_y = "COV.proj.ratio",
variable_x = "COV.curr.ratio"), width = 8, height = 6)
两个变量COV.proj.ratio和COV.curr.ratio是数字。
您对问题可能有什么线索?
非常感谢,R
您将变量作为字符串传递给函数,例如,mutate(y.calc = variable_y)
将字符串分配"COV.proj.ratio"
给y.calc
。因此,它是离散的。
您必须通过将字符串转换为符号!!sym()
。
使用一些随机样本数据尝试以下操作:
library(ggplot2)
library(dplyr)
library(tidyr)
DF <- data.frame(COV.proj.ratio = runif(100), COV.curr.ratio = runif(100))
BasicScatterPlotClassWrapper_b <- function(sample,pivot.var,pivot.title,lab.size,pivot.dot.size,pivot.ylab,pivot.xlab,font.size.x,font.size.y,pivot.lab,variable_y, variable_x) {
sample_w <- sample %>%
select(pivot.var) %>%
drop_na %>%
mutate(y.calc = !!sym(variable_y)) %>%
mutate(x.calc = !!sym(variable_x))
## GGplot
gg <- ggplot(sample_w, aes(x.calc,y.calc)) +
ggtitle(pivot.title) +
geom_point(colour = "blue") +
#scale_color_manual(values= "blue") +
ggrepel::geom_text_repel(aes(x.calc,y.calc, label = ""), size = pivot.lab ,fontface = "bold") +
xlab(pivot.xlab) +
ylab(pivot.ylab) +
scale_y_continuous(labels = scales::percent) +
scale_x_continuous(labels = scales::percent) +
theme(axis.title.y = element_text(face = "bold", size = 9, color="black"),
axis.title.x = element_text(face = "bold", size = 9, color="black"),
axis.text.x=element_text(size = font.size.x, face = "bold",hjust= 0.5),
axis.text.y=element_text(size = font.size.y, face = "bold",hjust= 0.5),
legend.position="none",
panel.background = element_rect(fill = "transparent", colour = NA),
axis.line = element_line(size = 0.2, colour = "black"))
return(gg)
}
BasicScatterPlotClassWrapper_b(
sample=DF,
pivot.var= c("COV.proj.ratio", "COV.curr.ratio"),
pivot.title="",
lab.size=3,
pivot.dot.size=2,
pivot.ylab="bla bla",
pivot.xlab="bla bla bla",
font.size.x=7,
font.size.y=7,
pivot.lab=2,
variable_y = "COV.proj.ratio",
variable_x = "COV.curr.ratio")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句