首页 > 解决方案 > 使用 ggplot 根据另一列中的值绘制两个变量

问题描述

我正在处理一个包含几列的数据集,例如大陆、经济状况和识字率。我正在寻找一种根据亚洲国家的经济状况和识字率绘制散点图的方法:

economy <- data$Economic status
literacy <- data$literacy rate

ggplot(data = subset(data, Continent == 'Asian countries'), aes(x = economy, y = literacy)) +
  geom_point()

但我不断收到一条错误消息,即美学与数据的长度不同。我只是不确定在使用该代码之前是否必须以某种方式按大陆修剪数据,或者以某种方式将经济/识字变量更改为仅来自代码中的亚洲国家。

谢谢你!

标签: rggplot2

解决方案


您的data = subset...术语告诉 ggplot 您想使用更短的版本,即data仅使用 Continent 为 Asia 的行。那么您的aes映射指的是原始数据(包括所有大陆)长度的向量。ggplot需要这些具有相同的长度;他们不是的事实表明他们没有引用相同的数据。

我认为这样的事情应该有效:

ggplot(data = subset(data, Continent == 'Asian countries'),  
  aes(x =`Economic status`, y = `literacy rate`)) +  
  geom_point()

推荐阅读