r - 如何在 ggplot 中绘制 3 个变量 separarelt?
问题描述
我想创建一个时间序列图,显示两个变量如何随时间变化并将它们着色到适当的区域?
我有 2 个地区,英格兰和威尔士,我计算了每个地区的 total_tax 和 total_income。
我想ggplot
使用 years 变量在多年来绘制这些。
我将如何做到这一点并分别为区域着色?
我有年份变量,我将把它放在 x 轴上,然后我想在图表上绘制两者incometax
,taxpaid
但显示它们随着时间的推移如何变化?
我将如何添加第三个轴来绘制这两个变量如何随时间变化的图?
我已经尝试过这段代码,但它并没有按照我想要的方式工作。
ggplot(tax_data, filter %>% aes(x=date)) +
geom_line(aes(y=incometax, color=region)) +
geom_line(aes(y=taxpaid, color=region))+
解决方案
ggplot 一开始有点难以掌握 - 我猜你正在尝试实现以下目标:
假设您的数据格式为每个日期、所得税和已缴税的列 - 我在这里创建一个示例:
library(tidyverse)
dataset <- tibble(date = seq(from = as.Date("2015-01-01"), to = as.Date("2019-12-31"), by = "month"),
incometax = rnorm(60, 100, 10),
taxpaid = rnorm(60, 60, 5))
现在,为每个绘制一条线incometax
,taxpaid
我们需要对数据进行整形或“整理”(详见此处):
dataset <- dataset %>% pivot_longer(cols = c(incometax, taxpaid))
现在你有了这样的三列——我们已经把以前的列名变成了变量name
:
# A tibble: 6 x 3
date name value
<date> <chr> <dbl>
1 2015-01-01 incometax 106.
2 2015-01-01 taxpaid 56.9
3 2015-02-01 incometax 112.
4 2015-02-01 taxpaid 65.0
5 2015-03-01 incometax 95.8
6 2015-03-01 taxpaid 64.6
这现在具有正确的格式ggplot
,您可以将 映射name
到线条的颜色:
ggplot(dataset, aes(x = date, y = value, colour = name)) + geom_line()
推荐阅读
- google-cloud-platform - 我不想为外部用户生成服务帐户,我想与之共享 bigquery 数据集 - 这会产生什么影响?
- amazon-sns - 无法接收来自 SNS 的消息
- objective-c - SwiftUI 小部件:在导入的 Objective-C 头文件中的 UILabel 参数上出现“预期类型”错误
- node.js - EJS 和条件语句
- libreoffice - 在行中查找最后填充的条目
- c - 回调函数与 C 中的 void 表达式有问题?
- angular - 当我单击子组件的输入时,会显示一个 div,我怎样才能一次制作一个或隐藏其他?
- c# - C# .NetCore HttpClient PostAsync Multipart Form-Data,带有文件附件和进度,供 PowerShell 使用
- apache-spark - 在 kubernetes 上运行 Spark 时出现错误“java.lang.UnsatisfiedLinkError:__strncpy_chk”
- kubernetes - Docker Desktop for Windows kubelet 日志位于何处?