相关疑难解决方法(0)

参数何时进入 aes() 内部或外部?

我正在阅读 Wickham 和 Grolemund 的“R for data science”中有关可视化的第一章。

我努力了:

 ggplot(data = mpg) + geom_point(mapping = aes(x = displ, y = hwy, color = "blue"))
Run Code Online (Sandbox Code Playgroud)

希望实现所有点都为蓝色的情节,但令我惊讶的是,它们都是红色的!阅读正确的代码来实现蓝点,在印刷版本的第11页或在线版本的第3.3节中,我发现它应该是

ggplot(data = mpg) + geom_point(mapping = aes(x = displ, y = hwy), color = "blue")
Run Code Online (Sandbox Code Playgroud)

事实上,他们指出,要手动设置美感,您必须在 aes() 函数之外,但在相应的 geom(此处为 geom_point())内给出它。为什么会这样呢?这种行为的确切解释是什么?事实上,对我来说,正确的语法将是第一个命令的语法似乎很自然。我想这个问题与层和/或变量的范围有关,但我只是无法掌握它的窍门。 .有人可以用勺子喂我吗?

编辑:抱歉,我没有做正确的作业:这只是相应部分末尾的文本本身中提出的练习 1...但我仍然无法得到答案。

r ggplot2

7
推荐指数
1
解决办法
3563
查看次数

当我通过美学提供其值时,无法使 geom_sf 线宽正常工作

我有一个形状文件,my_sf. 如果我写:

ggplot() +
  geom_sf(
    data = my_sf,
    size = 0.5 # this is the default value actually
  )
Run Code Online (Sandbox Code Playgroud)

然后就可以正常工作了。但是,如果我my_line_width向 中添加一个属性my_sf,并将该列中的每个值设置为 0.5,然后写入:

ggplot() +
  geom_sf(
    data = my_sf,
    aes(size = my_line_width)
  )
Run Code Online (Sandbox Code Playgroud)

然后我得到一堆巨大的线条,它们可怕地重叠。如果正常线条的宽度为 0.5,那么这些线条的宽度可能为 4。我不明白为什么它们不会产生相同的结果(除了图例,我知道只有在您使用美学时才会弹出图例)。有谁知道发生了什么事吗?

我也尝试过使用lwd而不是size. 完全相同的事情发生了:当我只是设置一个静态值时没问题,但是当我尝试通过美学提供值时,就会出错。

r ggplot2

6
推荐指数
2
解决办法
1万
查看次数

ggplot2:当“大小”包含内部和外部 aes 语句时,为什么符号大小不同?

我已经使用 base-R 创建了相当多的地图,但我现在尝试使用 ggplot2 执行类似的任务,因为可以轻松地将多个绘图排列在单个页面上。基本上,我正在绘制收集特定感兴趣物种样本的位置,并希望符号大小反映在该位置收集的物种的总重量。创建底图和各种图层并不是问题,但我无法按照我想要的方式获取符号大小和相关图例。

下面的可行示例演示了该问题。当我在 aes 之外包含“大小”时,符号大小似乎已适当缩放(图 1)。但是,当我将“大小”放入 aes 语句中(为了获得图例)时,符号大小不再正确(plot2)。看起来 ggplot2 已经重新调整了数据。这应该是一个简单的任务,所以我显然错过了一些非常基本的东西。任何帮助理解这一点的帮助将不胜感激。

library(ggplot2)

#create a very simple dataset that includes locations and total weight of samples collected from each site
catch.data<-data.frame(long=c(-50,-52.5,-52,-54,-53.8,-52),
                       lat=c(48,54,54,55,52,50),
                       wt=c(2,38,3,4,25,122))

#including 'size' outside of aes results in no legend
#but the symbol sizes are represented correctly
plot1<-ggplot(catch.data,aes(x=long,y=lat)) +
  geom_point(size=catch.data$wt,colour="white",fill="blue",shape=21)    

#including 'size' within aes appears necessary in order to create a legend
#but the symbol sizes are not represented correctly
plot2<-ggplot(catch.data,aes(x=long,y=lat)) +
  geom_point(aes(size=catch.data$wt),colour="white",fill="blue",shape=21)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r ggplot2

5
推荐指数
1
解决办法
674
查看次数

如何用两层更改ggplot图例标签和名称?

我正在使用ggmap和ggplot包绘制圣保罗地图中两个不同数据框的经度和纬度坐标,并希望手动标记每个图例层:

更新:我编辑了下面的代码以完全可重现(我使用的是地理编码功能而不是get_map).

更新:我想在不合并数据框的情况下这样做.

require(ggmap)

sp <- get_map('sao paulo', zoom=11, color='bw')
restaurants <- data.frame(lon=c(-46.73147, -46.65389, -46.67610), 
                          lat=c(-23.57462, -23.56360, -23.53748))
suppliers <- data.frame(lon=c(-46.70819,-46.68155, -46.74376), 
                        lat=c(-23.53382, -23.53942, -23.56630))
ggmap(sp)+geom_point(data=restaurants, aes(x=lon, y=lat),color='blue',size=4)+geom_point(data=suppliers, aes(x=lon, y=lat), color='red', size=4)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我已经看了几个问题并尝试了不同的方法但没有成功.有谁知道如何插入图例并将蓝点标记为餐馆,将红点标记为供应商?

r ggplot2 ggmap

4
推荐指数
1
解决办法
2159
查看次数

标签 统计

ggplot2 ×4

r ×4

ggmap ×1