Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
合并调色板颜色colorRampPalette并使用ggplot打印_R_Ggplot2_Colors_Leaflet_Maps - Fatal编程技术网

合并调色板颜色colorRampPalette并使用ggplot打印

合并调色板颜色colorRampPalette并使用ggplot打印,r,ggplot2,colors,leaflet,maps,R,Ggplot2,Colors,Leaflet,Maps,我正在尝试使用ggplot2进行复制,这是我之前使用的一个问题。我试图合并两个选项板,其中一个在变量低于某个阈值时使用,另一个在高于某个阈值时使用。正如我在我的传单中所做的那样,我的最终情节似乎并不正确。我还想将因子图例转换为连续图例。示例代码: library(sf) library(leaflet) library(RColorBrewer) # preparing the shapefile nc <- st_read(system.file("gpkg/nc.gpkg", p

我正在尝试使用
ggplot2
进行复制,这是我之前使用的一个问题。我试图合并两个选项板,其中一个在变量低于某个阈值时使用,另一个在高于某个阈值时使用。正如我在我的
传单中所做的那样,我的最终情节似乎并不正确。我还想将因子图例转换为连续图例。示例代码:

library(sf)  
library(leaflet)
library(RColorBrewer)

# preparing the shapefile
nc <- st_read(system.file("gpkg/nc.gpkg", package="sf"), quiet = TRUE) %>%
  st_transform(st_crs(4326)) %>%
  st_cast('POLYGON')

# Create 108 categories

mutate(nc, category = ntile(PERIMETER, n = 108)) -> nc

x <- sum(nc$PERIMETER < 1.3)  
x # number of values below threshold = 21


### Create an asymmetric color range
## Make vector of colors for values smaller than 1.3 (21 colors)
rc1 <- colorRampPalette(colors = c("#006837", "#1A9850"), space = "Lab")(x)    #21

## Make vector of colors for values larger than 1.3
rc2 <- colorRampPalette(colors = c("#FDAE61", "#A50026"), space = "Lab")(length(nc$PERIMETER) - x)

## Combine the two color palettes
rampcols <- c(rc1, rc2)

mypal <- colorFactor(palette = rampcols, domain = nc$category)
previewColors(colorNumeric(palette = rampcols, domain = NULL), values = 1:length(nc$PERIMETER))


nc %>%
  ggplot() +
  geom_sf(aes(fill = factor(category))) +
  scale_fill_manual(values = mypal(nc$category), guide = FALSE) 
给出了正确的绘图:

您可以看到
ggplot
图与我无法修复的图不一样

此外,当我向
ggplot
添加图例时,我会得到新调色板的因子图例,但我想要一个连续的图例(即使变量是因子):


有人知道如何解决着色问题并以连续形式修改相关图例吗?谢谢

我认为是由于使用了
factor()
,使用了以下代码造成的:

nc %>%
  ggplot() +
  geom_sf(aes(fill = factor(category))) +
  scale_fill_manual(values = mypal(levels(factor(nc$category))), guide = FALSE) 
给你一张和传单颜色一样的地图


对于任何人来说,我能找到的最接近的答案是在这之后使用
scale
软件包,而不是
scale\u fill\u manual
。使用这种方法,我不再使用
mypal
,而是在切点手动输入颜色,用
1.299
代替
1.3
重新缩放(c(.999,1.2999,1.3,3.640))
代替
重新缩放(c(.999,1.2999,1.3,3.640))

给予:


谢谢,颜色已经分类了!您知道如何合并一个连续的图例,但保持
比例\u填充\u手册
nc %>%
  ggplot() +
  geom_sf(aes(fill = factor(category))) +
  scale_fill_manual(values = mypal(nc$category))
nc %>%
  ggplot() +
  geom_sf(aes(fill = factor(category))) +
  scale_fill_manual(values = mypal(levels(factor(nc$category))), guide = FALSE) 
library("scales")
range(nc$PERIMETER)
#[1] 0.999 3.640
nc %>%
  ggplot() +
  geom_sf(aes(fill = PERIMETER)) +
  scale_fill_gradientn(colours = c("#006837", "#1A9850", "#FDAE61", "#A50026"), 
                       values = rescale(c(.999, 1.2999, 1.3, 3.640))
                       #guide = "colorbar"
                       #limits=c(-.1,.3)
  )