r 将多列数据帧绘制为线的折线图的问题
r problem to plot a linechart with multiple columns of dataframes as lines
我有一个非常简单的数据框 comparison_word_avg:
index uniform blur man_check_no_blur
1 1 94.71% 93.83% 91.96%
2 2 87.14% 86.08% 83.04%
3 3 81.29% 88.95% 80.36%
4 4 79.71% 71.59% 75.89%
5 5 75.57% 66.43% 67.86%
我想要折线图。在 x 轴上,指数从 1 到 5,在 y 轴上,百分比从 0% 到 100%。然后三行代表三列“unifrom”,“blur”,“man_check_no_blur”。
我尝试了什么:
ggplot(comparison_word_avg, aes(x = what)) +
geom_line(aes(y = uniform), color = "blue") +
geom_line(aes(y = blur), color = "red") +
geom_line(aes(y = man_check_no_blur), color = "green")
它给了我这个消息三次:
geom_path:每组仅包含一个观察值。需要调整群体审美吗?
感谢您的帮助!
最好的,
因为它们中有百分号,所以您的列是以字符格式存储的,而不是数字格式。这意味着 ggplot
不知道您希望将它们视为数字。要转换它们,我们可以去掉百分号,转换为数字,然后除以 100 得到百分比的比例。当我们绘图时,我们可以让 ggplot 再次将这些比例标记为百分比。
这只解决了部分问题。在 ggplot
中,您的数据最好采用长格式,即将所有百分比放在一列中,另一列根据每个观测值来自的系列标记每个观测值。如果我们这样做,我们可以将系列映射到颜色美学,它会自动为我们添加图例。我们可以使用 pivot_longer
轻松地将您的数据重塑为长格式。
综合起来,我们有。
library(tidyverse)
comparison_word_avg %>%
mutate(across(where(is.character), ~ as.numeric(sub("%", "", .x))/100)) %>%
pivot_longer(-1) %>%
ggplot(aes(index, value, color = name)) +
geom_line(size = 2) +
scale_color_brewer(palette = "Set1") +
labs(color = "") +
scale_y_continuous(labels = scales::percent, name = "Percent") +
theme_bw(base_size = 16)
我有一个非常简单的数据框 comparison_word_avg:
index uniform blur man_check_no_blur
1 1 94.71% 93.83% 91.96%
2 2 87.14% 86.08% 83.04%
3 3 81.29% 88.95% 80.36%
4 4 79.71% 71.59% 75.89%
5 5 75.57% 66.43% 67.86%
我想要折线图。在 x 轴上,指数从 1 到 5,在 y 轴上,百分比从 0% 到 100%。然后三行代表三列“unifrom”,“blur”,“man_check_no_blur”。
我尝试了什么:
ggplot(comparison_word_avg, aes(x = what)) +
geom_line(aes(y = uniform), color = "blue") +
geom_line(aes(y = blur), color = "red") +
geom_line(aes(y = man_check_no_blur), color = "green")
它给了我这个消息三次:
geom_path:每组仅包含一个观察值。需要调整群体审美吗?
感谢您的帮助! 最好的,
因为它们中有百分号,所以您的列是以字符格式存储的,而不是数字格式。这意味着 ggplot
不知道您希望将它们视为数字。要转换它们,我们可以去掉百分号,转换为数字,然后除以 100 得到百分比的比例。当我们绘图时,我们可以让 ggplot 再次将这些比例标记为百分比。
这只解决了部分问题。在 ggplot
中,您的数据最好采用长格式,即将所有百分比放在一列中,另一列根据每个观测值来自的系列标记每个观测值。如果我们这样做,我们可以将系列映射到颜色美学,它会自动为我们添加图例。我们可以使用 pivot_longer
轻松地将您的数据重塑为长格式。
综合起来,我们有。
library(tidyverse)
comparison_word_avg %>%
mutate(across(where(is.character), ~ as.numeric(sub("%", "", .x))/100)) %>%
pivot_longer(-1) %>%
ggplot(aes(index, value, color = name)) +
geom_line(size = 2) +
scale_color_brewer(palette = "Set1") +
labs(color = "") +
scale_y_continuous(labels = scales::percent, name = "Percent") +
theme_bw(base_size = 16)