r - 使用 ggplot 在网格中绘制两个 stat_function()
问题描述
我想使用相同的函数在网格中输出两个图,但输入不同x
。我根据这篇文章使用with ,并且ggplot2
我根据这篇文章和这篇文章将这两个情节结合起来。stat_function
f01 <- function(x) {1 - abs(x)}
ggplot() +
stat_function(data = data.frame(x=c(-1, 1)), aes(x = x, color = "red"), fun = f01) +
stat_function(data = data.frame(x=c(-2, 2)), aes(x = x, color = "black"), fun = f01)
具有以下输出:
阴谋:
信息:
`mapping` is not used by stat_function()`data` is not used by stat_function()`mapping` is not used by stat_function()`data` is not used by stat_function()
我不明白为什么stat_function()
不使用这两个论点。我希望绘制两张图,一张为x
between -1:1
,第二张为 x between -2:2
。此外,它将颜色作为标签,我也不明白为什么。我一定遗漏了一些明显的东西。
解决方案
老实说,我不太确定这里发生了什么ggplot
及其内部运作。似乎这些函数总是应用于完整的范围,这里是 -2 到 2。此外,github 上还有一个关于stat_function
.
但是,您可以使用xlim
参数stat_function
来限制绘制函数的范围。此外,如果您不colour
通过变量指定参数,而是通过手动标签指定参数,则需要告诉哪些颜色应该用于哪个标签scale_colour_manual
(最简单的是使用命名向量)。我还调整了线宽以更好地显示功能:
library(ggplot2)
f01 <- function(x) {1 - abs(x)}
cols <- c("red" = "red", "black" = "black")
ggplot() +
stat_function(data = data.frame(x=c(-1, 1)), aes(x = x, colour = "red"), fun = f01, size = 1.5, xlim = c(-1, 1)) +
stat_function(data = data.frame(x=c(-2, 2)), aes(x = x, colour = "black"), fun = f01) +
scale_colour_manual(values = cols)
推荐阅读
- java - JAVA,Jersy POST-ing 文件到服务器和 GET-ing 文件从服务器。使用多部分
- python - 如何使用 Python 优化 Selenium 中的代码评估
- jenkins - 如何将自定义主机条目添加到 jenkins slave agent pod
- node.js - 如何获取谷歌分析帐户列表和查看列表 api?
- android - 在手机上卸载后无法重新安装应用程序
- c++ - 为类字段中的指针分配空间
- python - Python/JSON 加载的对象大小因文件大小而异
- python - 通过 __table_args__ 字典添加 CheckConstraint
- bash - 用于对列表进行排序的 Bash 脚本
- javascript - Cutify 这个打字稿'groupBy'功能