根据值绘制一个变量(仅线和仅点)

2023-11-24

我想使用 ggplot2 在同一张图中绘制 3 个时间序列。我想将前两个系列绘制为没有点的实线。我想用点而不是线来绘制第三个系列。我怎样才能做到这一点?

library(ggplot2)
library(reshape2)

d1 <- c(1, 2, 3, 2, 1, 2, 3, 4, 5, 6, 5, 4, 3, 1)
d2 <- c(0, 2, 4, 5, 4, 3, 2, 4, 6, 7, 6, 5, 3, 1)
d3 <- c(0, 1, 2, 4, 4, 2, 1, 3, 4, 7, 8, 3, 5, 0)

ts1 <- ts(d1, c(2015, 01), c(2016, 03), frequency = 12)
ts2 <- ts(d2, c(2015, 01), c(2016, 03), frequency = 12)
ts3 <- ts(d3, c(2015, 01), c(2016, 03), frequency = 12)

# prepare data for ggplot
dat <- ts.union(ts1, ts2, ts3)
dat <- melt(dat, id.vars = "x")

# add dates
dates <- seq(as.Date("2015-01-01"), as.Date("2016-03-01"), by = "months")
dat$Date <- dates

p <- ggplot(dat, aes(x = Date, y = value, col = Var2)) +
  geom_line(aes(linetype = Var2), size = 1) +
  geom_point(aes(shape = Var2), size = 2) +
  scale_linetype_manual(values = c(1, 1, 1)) +
  scale_shape_manual(values = c(0, 1, 2))
print(p)

要进一步采用 @Rui Barradas 的解决方案,您可以使用guide_legend/override.aes()通过给出线来修改线和点的图例NA形状和点NA线型。

my_color <- setNames(c("red", "blue", "green"),
                     c('ts1', 'ts2', 'ts3'))
ggplot(dat, aes(x = Date, y = value, colour = Var2)) +
  geom_line(data = subset(dat, Var2 != "ts3")) +
  geom_point(data = subset(dat, Var2 == "ts3")) +
  scale_color_manual("Legend", values = my_color) +
  guides(color = guide_legend(override.aes = list(linetype = c(1,   1, NA),
                                                  shape    = c(NA, NA, 19)))) +
  theme_classic(base_size = 14)

Created on 2019-12-22 by the reprex package (v0.3.0)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据值绘制一个变量(仅线和仅点) 的相关文章

  • 在 R 中绘制决策树(插入符)

    我已经训练了一个数据集rf方法 例如 ctrl lt trainControl method LGOCV repeats 3 savePred TRUE verboseIter TRUE preProcOptions list thresh
  • rgdax(coinbase)数据未按预期收集数据

    我正在尝试使用rgdaxR 包用于下载一些历史价格 我设置了 API 密钥等 并尝试在过去 24 小时内加载 start lt strftime Sys time Y m dT H M SZ tz UTC end lt strftime S
  • 如果在循环中调用summary()命令,如何获得它的输出?

    Suppose Z是特征名称的向量 如何让以下 Rscript 中的摘要命令实际打印 for var in Z cat i form paste crim var lm fit lm form data Boston summary lm
  • 使用两列数据分割数据帧并对结果数据帧列表应用通用转换

    我想根据两列中的值将一个大数据帧拆分为一个数据帧列表 然后 我想对结果列表中的所有数据帧应用通用数据转换 滞后转换 我知道 split 命令 但只能让它一次处理一列数据 您需要将所有想要分割的因素放在一个列表中 例如 split mtcar
  • 在ggplot2中绘制大多边形地图的小区域

    我有一个 shapefile 我使用它在 ggplot2 中进行了强化和绘制geom polygon 我怎样才能只绘制这张地图的一小部分区域 我的完整地图看起来不错 但我的小区域很混乱 这是一个工作示例 这个小形状文件可以从以下位置获得 h
  • 从 glmnet 获取变量选择顺序

    我一直在使用 glmnet R 包为一个目标变量 Y 数字 和 762 个协变量构建 LASSO 回归模型 我使用 glmnet 函数 然后coef fit s 0 056360 获取该特定 lambda 值的系数值 我现在需要的是变量选择
  • 有什么方法可以访问 makeActiveBinding 安装的函数吗?

    标题基本上说明了一切 如果我这样做 makeActiveBinding x function runif 2 GlobalEnv x 1 0 7332872 0 4707796 x 1 0 5500310 0 5013099 那我有什么办法
  • 如何测试字符串中的前三个字符是r中的字母还是数字?

    下面给出了我拥有的数据集的示例 请注意 总数据集中我有超过两列 ID X 1 MJF34 2 GA249D 3 DEW235R 4 4SDFR3 5 DAS3 我想测试 X 中的前三个字符是否是字母 如果是 那么我想替换该值以仅显示前三个字
  • 拆分并保存在新的 data.frames 中

    我有一个大 data frame 144 列 我想将其分成每组 3 列 子文件或子 data frame 然后将子 data frame 保存在单独的文件中 换句话说 file1 将包含从 1 到 3 的列 file2 将包含从 6 到 9
  • 是否有 R 函数可以将这些数据从长形重塑为宽形?

    数据现在看起来如何 Coach ID Student score 1 A 8 1 B 3 2 A 5 2 B 4 2 C 7 看起来像这样 Coach ID Student score student 2 score 2 student 3
  • 如何计算满足条件的行数

    假设我有以下数据框 Data1 X1 X2 1 15 1 2 3 1 3 7 0 4 11 1 5 1 0 6 9 0 7 18 0 8 6 1 9 3 1 我想知道如何找到观察的总数X1大于 9 并且X2等于1 我想我需要使用sum 但我
  • 在 R 中查找 Windows 用户名

    有没有办法在 R 会话中获取当前的 Windows 用户名或 Windows 主目录 Thanks 抱歉 如果我错过了什么 但我找不到任何东西 你可以做 Sys getenv USERNAME Sys getenv HOME 如果你只是输入
  • 如果我有一个包含计数的表格,如何获得直方图/摘要统计数据? [复制]

    这个问题在这里已经有答案了 我习惯了像这样的观察向量c 1 1 1 3 4 我可以在上面看到汇总统计数据和绘制直方图等 但现在我发现自己拥有相同的数据 但采用如下压缩格式 value numObs 1 3 3 1 4 1 当数据以data
  • 将角色分成几部分

    我观察到以下特征 l lt mod range1 seq m n 0 1 range2 seq 2 2 0 1 range3 seq 2 2 0 1 在 R 中使用正则表达式我想要拆分l在以下结构中 1 mod range1 seq m n
  • 如何在双对数图(ggplot2)中添加趋势线?

    我需要绘制一个遵循幂律分布的数据向量 所以如果我将它们绘制在对数轴上 它们将是一条直线 但是 如果我没有明确提供 y 参数 我不知道如何绘制 这是代码 library poweRlaw library ggplot2 xmin 1 alph
  • 如何删除括号内的值的行?

    我正在使用以下数据框 Name Height Eric 64 Joe 67 Mike 66 Nick 72 Dave 69 Steve 73 我想删除 名称 列以左括号 开头的所有行 因此最终的数据框如下所示 Name Height Eri
  • 基于多列重新编码数据框列[重复]

    这个问题在这里已经有答案了 如何根据其他列的值重新编码列 假设我有以下数据框 我想重新编码df Col3使得该值为 0 如果df Col1 x and df Col2 a gt df lt data frame a c rep x 3 re
  • R 中带有变音符号的字符列表

    我试图将字符串中的电话 字符 出现次数制成表格 但变音符号单独作为字符制成表格 理想情况下 我有一个国际音标的单词列表 其中包含大量变音符号以及它们与基本字符的几种组合 我在这里给出了仅包含一个单词的 MWE 但对于单词列表和更多类型的组合
  • 删除ggplot2 geom_bar中没有数据的日期列[重复]

    这个问题在这里已经有答案了 我想隐藏 ggplot2 中没有数据的列 这是使用 nycflights13 库的可重现示例 library nycflights13 library dplyr library ggplot2 small da
  • R 比较所有列对的每个值[重复]

    这个问题在这里已经有答案了 我有一个 18x18 的数据框 我想将所有可能的列对相互比较 以便对于每对两列 18 行中的值相互比较 由于我的数据太大 无法放在这里 我写了一个小例子来说明到目前为止我所想到的 gt a lt c 1 18 g

随机推荐

  • 用于编辑页眉和页脚的 WORD 2010 宏

    我只有基本的 VBA 经验 之前的宏经验主要是使用 WORD 2003 录制宏用于获取 GoToFooter 或编辑页脚 菜单命令并允许后续编辑 在 WORD 2010 中 此命令 以及许多其他命令 不会 记录 到宏 但在记录模式下 我确实
  • 为什么这个径向渐变没有完成圆?

    我正在尝试使用径向渐变在作为单选按钮的圆形元素内创建边框 基本的 CSS 如下所示 我不明白为什么红色渐变不围绕圆圈的整个圆周 当白色色标接近 100 时 顶部 右侧 左侧和底部会出现红色间隙 为什么会发生这种情况 以及如何在仍然使用径向渐
  • 是 C 还是 C++?

    我需要在 cpp c 源文件中使用自然对数函数 现在 我当然可以通过快速的谷歌搜索和简单的库解决方案来做到这一点 但我有点困惑 在cplusplus dot com网站的reference cmath log 下有一个如何使用日志功能的示例
  • JDialog标题的字体大小

    如何设置 JDialog 标题的字体大小 我在极高分辨率的显示器 5 兆像素 上显示 JDialog 但对话框标题不清晰 我需要在每个对话框的基础上执行此操作 因为该应用程序是多显示器的 有些对话框出现在较低分辨率的显示器上 有些对话框出现
  • .NET xsd 导入器创建不可序列化的类

    我正在使用 NETXSD EXE导入器从 XSD 文件集合生成 C 类 当我尝试将其中一个类序列化为 XML 时 它失败了 无效操作异常 当我深入研究它时 我发现创建的类之一似乎是错误的 这是相关的 XSD 代码
  • 正确使用 JPA criteria API、Predicates 和 CriteriaQuery 的 where 方法

    我正在尝试测试 JPA 存储库 这是我的客户端 测试代码 Test public void testFindBoitesByMultiFieldWithIdentifiantSet BoiteDataOnDemand dod new Boi
  • 如何在asp中每天运行cron作业网络核心应用程序?

    我有一个用 asp 编写的网络应用程序 NET MVC 核心 2 2 O 需要每天凌晨 3 00 运行计划作业 最好的方法是什么 我尝试过hangfire 它在一段时间后停止 我们需要设置IIS服务器始终运行 我google了一下 找到了
  • 如何使用 SimpleXMLElement PHP 替换 XML 节点

    我有以下 XML 字符串 1
  • 在另一个更大的数组中查找一个数组

    最近 我被要求为一项工作编写 3 个测试程序 它们将仅使用核心 Java API 和我选择的任何测试框架来编写 应在适当的情况下实施单元测试 虽然我根本没有收到任何反馈 但我想他们不喜欢我的解决方案 否则我会收到他们的来信 所以我决定在这里
  • if 语句中表达式的顺序[重复]

    这个问题在这里已经有答案了 可能的重复 bCondition NULL 和 NULL bCondition 有什么区别 Javascript 比较语句的缩小 我一直在写我的if像这样的声明 if variable1 1 if variabl
  • 必须安装/启用 PHP Fileinfo 扩展才能使用干预图像

    我在 Laravel 5 项目中使用了干预镜像包 它正在本地服务器上工作 现在 当我通过 cpanel 上传到共享服务器时 出现错误 MissingDependencyException in ImageManager php line 1
  • G++ 找不到 boost 库

    我不擅长命令行编译 我的问题是无法编译简单的项目 这取决于Boost 以下是我的尝试日志 g Wall test cpp o main tmp ccCTvBYE o In function static initialization and
  • 如何访问godaddy共享主机linux中的php.ini文件

    我有一个网络 并且在我的本地主机上运行良好 在我上传到我的 godaddy 托管后 我的网站出现了错误 结论是 我必须更改 php ini 文件上的内存限制 但在 FTP 管理器上找不到 php ini 我尝试过 找到更改 Classing
  • 根据另一个选择框中的选择填充一个选择框 - JQuery?

    我试图根据第一个选择框中所做的选择来填充一个选择框 我在网上查找过 发现了很多有关硬编码选项的有用信息 但我需要我的选项来自查询 例如 Coldfusion 中的 cfquery 我知道 cfquery 是服务器端的 所以我不能将它包含在我
  • 如何从 jUnit 测试访问 Spring @Service 对象

    情况 我有用 Service 注释的服务实现类 可以访问属性文件 Service myService public class MySystemServiceImpl implements SystemService Resource pr
  • 将标准输入击键发送到通道,无需换行

    我想在每次击键发送到标准输入后 直接将用户的击键发送到通道 我尝试了下面的代码 但这并没有给出预期的结果 因为reader ReadByte 方法会阻塞 直到输入换行符 func chars lt chan byte ch make cha
  • 使用 async/await 调用 WCF 服务的模式

    我生成了一个代理基于任务的操作 应该如何正确调用该服务 处理ServiceClient和OperationContext之后 使用异步 等待 我的第一次尝试是 public async Task
  • 如何在struts 1.2中使用标签?

    如何使用
  • 是否可以通过仅更改 col 元素上的 CSS 类来隐藏/显示表格列?

    我试图在运行时根据用户的选择隐藏 显示表中的列 我定义了两个 CSS 类 hide visibility collapse show visibility visible 我尝试在
  • 根据值绘制一个变量(仅线和仅点)

    我想使用 ggplot2 在同一张图中绘制 3 个时间序列 我想将前两个系列绘制为没有点的实线 我想用点而不是线来绘制第三个系列 我怎样才能做到这一点 library ggplot2 library reshape2 d1 lt c 1 2