使用 geom_polygon() 保留自定义颜色
Keep customized colors with geom_polygon()
我用 map()
绘制了一张带有自定义颜色的法国地图 :
map(database="france", fill=TRUE, col=color)
结果:
(两个错误不要介意)
然后我想使用 ggplot2
包将这张地图与 Lambert 的投影放在一起:
head(fortify(carte_france))
ggplot(map('france'), aes(long, lat, group = group)) +
geom_polygon(col = 1) +
coord_map(projection = "lambert", parameters = c(lat0 = 41.366005 , lat1 = 51.097523))
但是它给了我这个:
我知道深色来自 geom_polygon()
的 arg fill
但是有没有办法告诉函数 geom_polygon()
不要使用 arg fill
还是保留我之前放的颜色?
颜色向量,color
:
c("yellowgreen", "yellowgreen", "yellowgreen", "yellowgreen",
"gold1", "sienna3", "yellowgreen", "yellowgreen", "sienna3",
"gold1", "gold1", "gold1", "sienna3", "sienna3", "gold1", "dodgerblue2",
"dodgerblue2", "dodgerblue2", "gold1", "dodgerblue2", "sienna3",
"dodgerblue2", "burlywood2", "dodgerblue2", "palevioletred4",
"dodgerblue2", "palevioletred4", "dodgerblue2", "palevioletred4",
"palevioletred4", "gold1", "palevioletred4", "gold1", "darkorchid4",
"gold1", "darkorchid4", "palevioletred4", "green4", "cyan4",
"gold1", "palevioletred4", "burlywood2", "green4", "green4",
"cyan4", "darkorchid4", "green4", "burlywood2", "palevioletred4",
"burlywood2", "green4", "green4", "palevioletred4", "palevioletred4",
"palevioletred4", "green4", "burlywood2", "olivedrab2", "green4",
"olivedrab2", "darkorchid4", "darkorchid4", "cyan4", "darkorchid4",
"cyan4", "cyan4", "olivedrab2", "olivedrab2", "olivedrab2", "cyan4",
"cyan4", "olivedrab2", "cyan4", "olivedrab2", "olivedrab2", "cyan4",
"cyan4", "olivedrab2", "olivedrab2", "olivedrab2", "cyan4", "cyan4",
"cyan4", "cyan4", "orange2", "orangered1", "orangered1", "orangered1",
"olivedrab2", "orange2", "olivedrab2", "orangered1", "orange2",
"orangered1", "orange2", "orange2", "orangered1", "orangered1",
"orangered1", "orange2", "orangered1", "orange2", "orangered1",
"olivedrab2", "orangered1", "orangered1", "orangered1", "orangered1",
"orange2", "orange2", "orange2", "chartreuse3", "orangered1",
"chartreuse3")
首先,您应该使用 map_data
创建一个格式良好的数据集,用于 ggplot 以及来自图书馆地图的地图。在这种情况下,您的地图上不会有这些白点。
当您根据 map
函数中的多边形顺序定义颜色顺序时,我创建了一个 table 用于与 map_data
.
左连接
# Get polygon order from map
map_france <- map(database="france", fill=TRUE)
# Create a dataframe with department and corresponding colors
names_col <- data.frame(
region = map_france$names,
col_dpt = c("yellowgreen", "yellowgreen", "yellowgreen", "yellowgreen",
"gold1", "sienna3", "yellowgreen", "yellowgreen", "sienna3",
"gold1", "gold1", "gold1", "sienna3", "sienna3", "gold1", "dodgerblue2",
"dodgerblue2", "dodgerblue2", "gold1", "dodgerblue2", "sienna3",
"dodgerblue2", "burlywood2", "dodgerblue2", "palevioletred4",
"dodgerblue2", "palevioletred4", "dodgerblue2", "palevioletred4",
"palevioletred4", "gold1", "palevioletred4", "gold1", "darkorchid4",
"gold1", "darkorchid4", "palevioletred4", "green4", "cyan4",
"gold1", "palevioletred4", "burlywood2", "green4", "green4",
"cyan4", "darkorchid4", "green4", "burlywood2", "palevioletred4",
"burlywood2", "green4", "green4", "palevioletred4", "palevioletred4",
"palevioletred4", "green4", "burlywood2", "olivedrab2", "green4",
"olivedrab2", "darkorchid4", "darkorchid4", "cyan4", "darkorchid4",
"cyan4", "cyan4", "olivedrab2", "olivedrab2", "olivedrab2", "cyan4",
"cyan4", "olivedrab2", "cyan4", "olivedrab2", "olivedrab2", "cyan4",
"cyan4", "olivedrab2", "olivedrab2", "olivedrab2", "cyan4", "cyan4",
"cyan4", "cyan4", "orange2", "orangered1", "orangered1", "orangered1",
"olivedrab2", "orange2", "olivedrab2", "orangered1", "orange2",
"orangered1", "orange2", "orange2", "orangered1", "orangered1",
"orangered1", "orange2", "orangered1", "orange2", "orangered1",
"olivedrab2", "orangered1", "orangered1", "orangered1", "orangered1",
"orange2", "orange2", "orange2", "chartreuse3", "orangered1",
"chartreuse3")
)
然后您可以将此数据框连接到 map_data
创建的数据,并使用 ggplot 调用颜色向量。
# Get the map in the correct format for ggplot
# And join the correspondance of colors
carte_france <- map_data('france') %>%
left_join(names_col)
# Plot
ggplot(carte_france, aes(long, lat, group = group)) +
geom_polygon(col = 1, fill = carte_france$col_dpt) +
coord_map(projection = "lambert",
parameters = c(lat0 = 41.366005 , lat1 = 51.097523))
为了您的信息,在 IGN (http://professionnels.ign.fr/geofla) 的网站上,您可以下载法国部门的地图,其中包含该地区的信息。在这种情况下,根据区域名称创建颜色矢量会更容易...
我用 map()
绘制了一张带有自定义颜色的法国地图 :
map(database="france", fill=TRUE, col=color)
结果:
(两个错误不要介意)
然后我想使用 ggplot2
包将这张地图与 Lambert 的投影放在一起:
head(fortify(carte_france))
ggplot(map('france'), aes(long, lat, group = group)) +
geom_polygon(col = 1) +
coord_map(projection = "lambert", parameters = c(lat0 = 41.366005 , lat1 = 51.097523))
但是它给了我这个:
我知道深色来自 geom_polygon()
的 arg fill
但是有没有办法告诉函数 geom_polygon()
不要使用 arg fill
还是保留我之前放的颜色?
颜色向量,color
:
c("yellowgreen", "yellowgreen", "yellowgreen", "yellowgreen",
"gold1", "sienna3", "yellowgreen", "yellowgreen", "sienna3",
"gold1", "gold1", "gold1", "sienna3", "sienna3", "gold1", "dodgerblue2",
"dodgerblue2", "dodgerblue2", "gold1", "dodgerblue2", "sienna3",
"dodgerblue2", "burlywood2", "dodgerblue2", "palevioletred4",
"dodgerblue2", "palevioletred4", "dodgerblue2", "palevioletred4",
"palevioletred4", "gold1", "palevioletred4", "gold1", "darkorchid4",
"gold1", "darkorchid4", "palevioletred4", "green4", "cyan4",
"gold1", "palevioletred4", "burlywood2", "green4", "green4",
"cyan4", "darkorchid4", "green4", "burlywood2", "palevioletred4",
"burlywood2", "green4", "green4", "palevioletred4", "palevioletred4",
"palevioletred4", "green4", "burlywood2", "olivedrab2", "green4",
"olivedrab2", "darkorchid4", "darkorchid4", "cyan4", "darkorchid4",
"cyan4", "cyan4", "olivedrab2", "olivedrab2", "olivedrab2", "cyan4",
"cyan4", "olivedrab2", "cyan4", "olivedrab2", "olivedrab2", "cyan4",
"cyan4", "olivedrab2", "olivedrab2", "olivedrab2", "cyan4", "cyan4",
"cyan4", "cyan4", "orange2", "orangered1", "orangered1", "orangered1",
"olivedrab2", "orange2", "olivedrab2", "orangered1", "orange2",
"orangered1", "orange2", "orange2", "orangered1", "orangered1",
"orangered1", "orange2", "orangered1", "orange2", "orangered1",
"olivedrab2", "orangered1", "orangered1", "orangered1", "orangered1",
"orange2", "orange2", "orange2", "chartreuse3", "orangered1",
"chartreuse3")
首先,您应该使用 map_data
创建一个格式良好的数据集,用于 ggplot 以及来自图书馆地图的地图。在这种情况下,您的地图上不会有这些白点。
当您根据 map
函数中的多边形顺序定义颜色顺序时,我创建了一个 table 用于与 map_data
.
# Get polygon order from map
map_france <- map(database="france", fill=TRUE)
# Create a dataframe with department and corresponding colors
names_col <- data.frame(
region = map_france$names,
col_dpt = c("yellowgreen", "yellowgreen", "yellowgreen", "yellowgreen",
"gold1", "sienna3", "yellowgreen", "yellowgreen", "sienna3",
"gold1", "gold1", "gold1", "sienna3", "sienna3", "gold1", "dodgerblue2",
"dodgerblue2", "dodgerblue2", "gold1", "dodgerblue2", "sienna3",
"dodgerblue2", "burlywood2", "dodgerblue2", "palevioletred4",
"dodgerblue2", "palevioletred4", "dodgerblue2", "palevioletred4",
"palevioletred4", "gold1", "palevioletred4", "gold1", "darkorchid4",
"gold1", "darkorchid4", "palevioletred4", "green4", "cyan4",
"gold1", "palevioletred4", "burlywood2", "green4", "green4",
"cyan4", "darkorchid4", "green4", "burlywood2", "palevioletred4",
"burlywood2", "green4", "green4", "palevioletred4", "palevioletred4",
"palevioletred4", "green4", "burlywood2", "olivedrab2", "green4",
"olivedrab2", "darkorchid4", "darkorchid4", "cyan4", "darkorchid4",
"cyan4", "cyan4", "olivedrab2", "olivedrab2", "olivedrab2", "cyan4",
"cyan4", "olivedrab2", "cyan4", "olivedrab2", "olivedrab2", "cyan4",
"cyan4", "olivedrab2", "olivedrab2", "olivedrab2", "cyan4", "cyan4",
"cyan4", "cyan4", "orange2", "orangered1", "orangered1", "orangered1",
"olivedrab2", "orange2", "olivedrab2", "orangered1", "orange2",
"orangered1", "orange2", "orange2", "orangered1", "orangered1",
"orangered1", "orange2", "orangered1", "orange2", "orangered1",
"olivedrab2", "orangered1", "orangered1", "orangered1", "orangered1",
"orange2", "orange2", "orange2", "chartreuse3", "orangered1",
"chartreuse3")
)
然后您可以将此数据框连接到 map_data
创建的数据,并使用 ggplot 调用颜色向量。
# Get the map in the correct format for ggplot
# And join the correspondance of colors
carte_france <- map_data('france') %>%
left_join(names_col)
# Plot
ggplot(carte_france, aes(long, lat, group = group)) +
geom_polygon(col = 1, fill = carte_france$col_dpt) +
coord_map(projection = "lambert",
parameters = c(lat0 = 41.366005 , lat1 = 51.097523))
为了您的信息,在 IGN (http://professionnels.ign.fr/geofla) 的网站上,您可以下载法国部门的地图,其中包含该地区的信息。在这种情况下,根据区域名称创建颜色矢量会更容易...