为作业设置了这个问题--但我以前从未使用过R--任何帮助都是非常感谢的。非常感谢。
问题:绘制一个散点图,比较1950年至2019年期间巴西和阿根廷的CO2排放量.我可以为巴西得到它,但不知道如何添加阿根廷。我想我得用geom_point和过滤器做点什么?
df%>%
filter(Country=="Brazil", Year<=2019 & Year>=1950) %>%
ggplot(aes(x = Year, y = CO2_annual_tonnes)) +
geom_point(na.rm =TRUE, shape=20, size=2, colour="green") +
labs(x = "Year", y = "CO2Emmissions (tonnes)")发布于 2021-10-29 16:45:08
答案取决于您想要做什么,但是通常在散点图中添加另一个维度,其中您已经有了清晰的x和y维度,这是通过应用美学(颜色、形状等)或通过平面来完成的。
在这两种方法中,您实际上都不希望过滤数据。您可以使用美学或面形来以某种方式“过滤”数据,并根据数据集中的country列适当地映射数据。如果您的数据集包含比阿根廷和巴西更多的国家,则需要筛选只包含这些国家,因此:
your_filtered_df <- your_df %>%
dplyr::filter(Country %in% c("Argentina", "Brazil"))面影
面见是另一种表示你想把你的一个情节分成两个单独的情节的方式(一个是阿根廷的,一个是巴西的)。每个地块将具有相同的美学(外观相同),但将有适当的“过滤”数据集。
在你的例子中,你可以尝试:
your_filtered_df %>%
ggplot(aes(x = Year, y = CO2_annual_tonnes)) +
geom_point(na.rm =TRUE, shape=20, size=2, colour="green") +
facet_wrap(~Country)美学
在这里,你有很多选择。其思想是告诉ggplot2将点geom中各个点的外观映射到your_filtered_df$Country中指定的值。要做到这一点,您可以将geom_point()的美学参数之一放在aes()中。例如,如果使用shape=,它可能如下所示:
your_filtered_df %>%
ggplot(aes(x = Year, y = CO2_annual_tonnes)) +
geom_point(aes(shape=Country), na.rm =TRUE, size=2, colour="green")这应该显示一个具有图例创建和两个不同形状的点对应于国家名称的情节。非常重要的是要记住,当您在aes()中放置诸如shape、color或size之类的美学时,也不能将它放在之外。因此,这样做是正确的:
geom_point(aes(colour=Country), ...)但这不会:
geom_point(aes(colour=Country), colour="green", ...)当一种审美是外在的,它就会超越aes()中的一种。第二个仍然会显示所有的点为绿色。
别这么做..。但它很管用
“任择议定书”发表了一条评论,指出这位教授还提出了一些提示,即:
我们在“您可以在geom_point对象中嵌入管道过滤器函数”的问题中得到了提示
我相信他们指的是最后一次..。很糟糕的产生点的方法。此方法将要求您有两个geom_point()对象,并向每个对象发送不同的筛选数据集。您可以通过访问每个data=对象中的geom_point()参数来实现这一点。这种方法存在许多问题,包括没有生成一个图例,但是如果您必须这样做.下面是:
# painful to write this. it goes against all good practices with ggplot
your_filtered_df %>%
ggplot(aes(x = Year, y = CO2_annual_tonnes)) +
geom_point(data=your_filtered_df %>% dplyr::filter(Country=="Argentina"),
color="green", shape=20) +
geom_point(data=your_filtered_df %>% dplyr::filter(Country=="Brazil"),
color="red", shape=20)你也许应该看看为什么这不是一个好的约定。想想你会为代表50个不同的国家做些什么。以上代码或方法可以工作,但使用此方法,您将在您的绘图中有50个单独的geom_point()对象。呃。别打错字!
https://stackoverflow.com/questions/69772170
复制相似问题