R 带有ggplot2和geom_地图的彩色编码世界地图

R 带有ggplot2和geom_地图的彩色编码世界地图,r,ggplot2,R,Ggplot2,我试图绘制一张世界地图,其中每个国家的颜色取决于数据框中变量的值 > affiliation # A tibble: 252 × 2 region value <chr> <dbl> 1 Aruba 0 2 Afghanistan 0 3 Angola 0 4 Ang

我试图绘制一张世界地图,其中每个国家的颜色取决于数据框中变量的值

> affiliation
# A tibble: 252 × 2
                 region value
                  <chr> <dbl>
1                 Aruba     0
2           Afghanistan     0
3                Angola     0
4              Anguilla     0
5               Albania     0
6               Finland     1
7               Andorra     0
8  United Arab Emirates     0
9             Argentina     2
10              Armenia     0
# ... with 242 more rows
我的问题是,大多数值是0、1或2,在20-30个国家中很少有值,但在330个国家中有1个异常值。这使得颜色比例毫无用处,因为该国家/地区显示为饱和颜色,而所有值低得多的国家/地区显示为白色

我试图将
geom_图(aes(fill=value),…
替换为
geom_图(aes(fill=log(value)),…
,但在这种情况下,图例中的比例显示为0到5+(而不是0到330)

我可以做些什么来更好地控制许多低值国家的颜色饱和度,以便使它们在世界地图上更可见?
谢谢

与其使用
缩放填充梯度
,不如尝试调用
缩放填充梯度
,根据需要设置颜色停止。例如:

scale_fill_gradientn(colours = c('#ff0000', '#cccccc', '#0000ff'), values = c(0, 30, 331))

与其使用
scale\u fill\u gradient
,不如尝试调用
scale\u fill\u gradientn
,根据需要设置颜色停止。例如:

scale_fill_gradientn(colours = c('#ff0000', '#cccccc', '#0000ff'), values = c(0, 30, 331))

ggplot2中的大多数连续
scale
函数都接受一个
trans
参数,该参数指定要在该美学上使用的变换。这将自动处理变换和标签


在您的示例中,添加
trans=“log1p”
(不仅仅是
“log”
,因为您的数据有两个
0
值)对于
scale\u gradient\n
的参数可能会有所帮助。

ggplot2中的大多数连续
scale
函数都接受一个
trans
参数,该参数指定要在该美学上使用的变换。这将自动处理变换和标签


在您的示例中,添加
trans=“log1p”
(不仅仅是
“log”
,因为您的数据有两个
0
值)对于
scale\u gradient\n
的参数可能会有所帮助。

谢谢。我不知道
scale\u fill\u gradientn
。如果我可以在
参数中提供值的范围,这将是个好主意,但我找不到任何信息。有可能吗?您可以通过提供额外的止损点来接近。例如,
values=c(0,30,35,320,331),colors=c('red',red',red',red',green',green')
谢谢。我不知道
比例填充梯度n
。如果我可以在
参数中提供范围,这是个好主意,但我找不到任何信息。有可能吗?你可以通过提供额外的止损点来接近。例如,
值=c(0,30,35,320,331),colors=c('red',red',red',red',green',green')
向前迈进了一大步。谢谢。我如何修改图例,使其显示0到330范围,而不是1到5范围?您可以使用
breaks
参数。因此,如果您想使用@jdobres'中的颜色,请回答:
缩放填充梯度n(name=“附属公司数量”,trans='log1p',colors=c('ff0000','cccccc','0000ff'),value=c(0,30,331)/331,breaks=c(0,30,331))
明白了。只需将
breaks
labels
参数包含在
scale\u fill\u gradient
中,就可以向前迈进一大步。谢谢。我如何修改图例,使其显示0到330的范围,而不是1到5的范围?您可以使用
breaks
参数。因此,如果您想使用@jdobres'answ中的颜色er:
scale\u fill\u gradientn(name=“Number of Affiliates”,trans='log1p',colors=c('ff0000','ccccccc','0000ff'),values=c(0,30331)/331,breaks=c(0,30331))
明白了。只需将
breaks
label
参数包含在
scale\u fill\u gradient中即可