R Highcharter自定义图例以仅显示某些值
Posted
技术标签:
【中文标题】R Highcharter自定义图例以仅显示某些值【英文标题】:R Highcharter customize legend to show only certain values 【发布时间】:2020-06-19 13:41:25 【问题描述】:我需要图例来显示候选名称及其颜色,其中间隔 == 3。 see plot here
对停靠点 df (stops[my.cols$interval==3])) 设置子集适用于图例,但它也会更改地图上的颜色。我需要保持每个州的颜色相同,但我不想在图例中多次显示候选人的姓名。
请参阅下面的 MWE:
library(highcharter)
library(usmap)
library(dplyr)
df <- usmap::statepop
df$interval <- sample(c(1,2,3), nrow(df), replace = T)
df$scaled <- sample(1:18, nrow(df), replace = T)
us_small <- download_map_data("countries/us/custom/us-small")
my.cols <- data.frame(
interval = c(3,2,1),
scaled = 1:18,
ContractName = c(rep("Klobuchar",3),rep("Buttigieg",3),rep("Bloomberg",3),rep("Biden",3),rep("Sanders",3),rep("Warren",3)),
hexes = c( # GRAY: [
'#dddddd',
'#bbbbbb',
'#888888',
# PURPLE: [
'#e8bbdc',
'#b577a5' ,
'#7c466e' ,
# GREEN: [
'#bbe8ae',
'#88b57a',
'#4e7641',
# BLUE: [
'#b5cacf',
'#81b5c0',
'#578b96' ,
# RED: [
'#f9adad',
'#cf0000',
'#9f0000',
# more gray
"#000000",
"#696969",
"#808080"
))
stops <- data.frame(
name = my.cols$ContractName,
scaled = 1:18,
from = 0:17/17,
color = toupper(my.cols$hexes),
stringsAsFactors = FALSE)
df <- merge(df, stops, by = "scaled")
stops <- list_parse(stops)
highchart() %>%
hc_add_series_map(us_small, df,
value = "from", joinBy = c("woe-name", "full"),
borderColor = "darkgrey"
,dataLabels = list(enabled = TRUE
,format = "point.properties.hc-a2")) %>%
# hc_colorAxis(dataClasses = stops[my.cols$interval==3]) %>%
hc_colorAxis(dataClasses = stops) %>%
hc_legend(align = 'right') %>%
hc_mapNavigation(enabled = FALSE)
hc_plotOptions 中有什么东西可以帮助自定义图例吗?
此解决方案使图例中的重复名称变灰,但仍显示它们:R - highcharter - selective legends at display
【问题讨论】:
【参考方案1】:我可以设置种子:
set.seed(111)
df <- usmap::statepop
df$interval <- sample(c(1,2,3), nrow(df), replace = T)
df$scaled <- sample(1:18, nrow(df), replace = T)
您的子集根据 data.frame my.cols 停止?在它看起来像这样之前:
希望我没看错,因为不太清楚您要显示哪些图例:
highchart() %>%
hc_add_series_map(us_small, df,
value = "from", joinBy = c("woe-name", "full"),
borderColor = "darkgrey",
dataLabels = list(enabled = TRUE
,format = "point.properties.hc-a2")) %>%
hc_colorAxis(dataClasses = stops[my.cols$interval==3]) %>%
hc_legend(align = 'right') %>%
hc_mapNavigation(enabled = FALSE)
这些是我会话中用于运行它的包:
R version 3.6.1 (2019-07-05)
[...]
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] dplyr_0.8.3 usmap_0.5.0 highcharter_0.7.0
【讨论】:
子设置停靠点 data.frame 也会改变地图中的颜色。我需要保持地图中的颜色一致,但在图例中只显示每个候选人的名字一次。 我现在来澄清一下原帖 嘿,我也不知道你指的是什么..也许你先把它整理出来..对我来说,所有的颜色看起来都一样,只是图例改变了。 我不确定我错过了什么,因为当我在有/没有子集的情况下运行相同的代码时,我的状态颜色会发生变化。我会接受你的回答,因为它似乎对你有用,但我会稍等片刻,看看是否有其他人在运行上述 MWE 时遇到与我相同的问题。 不用担心。我觉得这很奇怪。我已经用我正在使用的版本和软件包更新了答案。看看能不能重现以上是关于R Highcharter自定义图例以仅显示某些值的主要内容,如果未能解决你的问题,请参考以下文章
R Highcharter:用同步缩放/工具提示分隔图例或多个图表的巧妙方法?
R语言ggplot2可视化热力图(heatmap)自定义配置图例标签为百分比进行热力图颜色渐变显示(legend to display percentage sign)
R语言ggplot2可视化热力图(heatmap)自定义配置图例标签为百分比进行热力图颜色渐变显示(legend to display percentage sign)
lattice levelplot 或 ggplot2 map R 的自定义图例
R语言ggplot2可视化:使用ggplot2按照热力图的方式显示全是分类变量的dataframe数据并自定义因子(factor)的图例颜色legend