r - 使用 ggplot2 绘制数据框的行
问题描述
我有一个 7obs x 26 变量数据框。观察值(行)是国家,列是年份。但是,年份被写为列名。
我想要做的是创建一个情节,其中年份(列名)作为 X 轴,每个国家作为 Y 轴。所以我要做的是,首先删除带有名称的第一列。
map1 <- map1[-1]
然后绘制:
ggplot(map1, aes(8)) +
geom_line(aes(y = 1, colour = "var0")) +
geom_line(aes(y = 2, colour = "var1")) +
geom_line(aes(y = 3, colour = "var0")) +
geom_line(aes(y = 4, colour = "var0")) +
geom_line(aes(y = 5, colour = "var0")) +
geom_line(aes(y = 6, colour = "var0")) +
geom_line(aes(y = 7, colour = "var0"))
然而,这给了我一个空图
解决方案
由于 ggplot2 建立在 tidy data 的概念之上,这意味着每一行是一个观察值,每一列是一个变量,最好使用例如重塑您的数据tidyr::pivot_longer
:
由于您没有提供任何数据,我使用了一些基于数据集的随机数据gapminder
:
library(gapminder)
library(dplyr)
library(tidyr)
library(ggplot2)
map1_tidy <- map1 %>%
tidyr::pivot_longer(-country, names_to = "year", values_to = "value")
ggplot(map1_tidy, aes(year, value, color = country, group = country)) +
geom_line()
数据
set.seed(42)
map1 <- gapminder[, c("country", "year", "gdpPercap")] %>%
tidyr::pivot_wider(names_from = year, values_from = gdpPercap) %>%
dplyr::sample_n(10)
推荐阅读
- django - Django Rest Framework:未提供身份验证凭据
- google-maps - 检查字符串地址 X 是否在字符串地址 Y 内,使用 REST API 复杂多边形
- reactjs - 不正确的 JSS 样式顺序 - Material-UI
- php - Laravel 列表中的海量数据
- javascript - “this”在 Visual Studio 2017 的 Razor 视图中呈现为普通文本
- postgresql - 相关子查询与不可变函数
- sql - 带有计数条件的 SQL 查询
- javascript - 图像 src 对数组进行排序
- css - 我可以在 html xaringan R 中居中和居中一个数字吗
- ruby-on-rails - Rails:是否可以在 Rails 中将 PostgreSQL 数据库条目分配给 Vue?