首页 > 解决方案 > 使用 ggplot 创建热图

问题描述

我正在使用 R,我想使用 Eurostat 包创建一个热图,我正在努力使用调色板。我知道网络上有几个示例,但我无法修复此错误。

我尝试了几种调色板,库,但是,它们中的每一个都抛出了一些错误(以下指的是 Viridis 库)。

ERROR: Error: Discrete value supplied to continuous scale

我想使用蓝色(深蓝色 - 浅蓝色/黄色)的调色板/库。你会这么好心来帮助我吗?

PS。我是新手,欢迎多多指教!

library(eurostat)
library(dplyr)
library(ggplot2)
library(stringr)


data = get_eurostat("edat_lfse_03", time_format = "num")

data_map <- data%>%
  filter(age == 'Y25-34' & time == '2019' & isced11 == 'ED5-8' & geo != 'TR')%>%
  group_by(geo)%>%
  summarise(Values=mean(values, na.rm=TRUE))

mapdata <- get_eurostat_geospatial(nuts_level = 0, resolution='60',
                                   year=2016, 
                                   output_class = 'df') %>%
  right_join(data_map, by='geo')%>%
  mutate(cat = cut_to_classes(Values, n=7, decimals = 1))

map <- ggplot(mapdata, aes(x=long,y=lat,group=group)) + 
  #scale_fill_manual("NOTHING WORKED HERE")+
  xlab('longitude')+  ylab('latitude') +
  geom_polygon(aes(fill=mapdata$cat),color="white", size=.1)+ 
  xlim(c(-12,44)) + ylim(c(35,70)) + scale_fill_viridis_c()
map

标签: dictionaryggplot2heatmap

解决方案


代替

xlim(c(-12,44)) + ylim(c(35,70)) + scale_fill_viridis_c()

利用

scale_x_continuous(limits=c(-12, 44)) + scale_y_continuous(limits=c(35, 70)) + scale_fill_viridis_d()

将离散值转换为连续值。这应该有效。这是你想做的吗?


推荐阅读