用于绘制气泡图/图表的大小图例

时间:2017-11-19 23:43:36

标签: python r plotly

这是一个图形“气泡”地图(即带有标记的地图,其大小映射到变量)。但是,图例仅显示颜色类别,但不显示尺寸与值的关系。

library(plotly)

DF = data.frame(
  Group = c("A",  "B",  "A",  "B", "A", "C", "C"), 
  Value = c(100,  80,   90,  150, 120,  60, 110), 
  lat =  c( 40,   32,   36,   44,  31,  39,  37), 
  long = c(-90, -100, -120, -110, -90, -80,-105))


plot_geo(DF, locationmode = 'USA-states') %>%
  add_markers(y=~lat, x=~long, color=~Group, size=~Value, 
    marker=list(sizeref=0.1, sizemode="area")) %>%
  layout(geo=list(scope = 'usa'))

enter image description here

This question显示了如何控制标记的大小,但没有回答如何在图例中显示这些大小。在thisthis问题中,我们可以看到,如果每个类别只有一个与之关联的标记大小,那么图例将显示缩放到它们在气泡图中的大小的标记。但这在这里没有用。情节网站上有bubble chartsbubble maps的示例,但这些都没有尺寸图例。

有没有办法将标记大小的图例添加到气泡图/地图中?上面的例子使用R api,但使用另一个plotly api(例如python)的答案也是可以接受的。

编辑:为什么这不是this question

的副本

我已经在原帖中链接了这个问题,并解释了为什么它不同。但是让我试着更清楚地解释一下这个区别,因为有人已经将它标记为可能的副本......

链接的问题涉及到某个人在传奇中出现不同的气泡大小,因为他们的数据中每个类别只有一个尺寸。相比之下,该示例中的类别各自具有不同大小的气泡。链接问题中的OP想要知道如何摆脱图例中的不同大小 - 如何将值映射到图例中的大小。链接问题中的答案为实现这一目标提供了各种质量的解决方法。但是,在这个问题中,我已经有了一个标记大小相同的图例。我想要的是添加一个图例,该图例显示各种尺寸的气泡,每个气泡都标有该尺寸对应的值。链接帖子中没有任何内容询问或显示如何实现这一目标。

1 个答案:

答案 0 :(得分:10)

在看到关于这个问题的一些评论表明无法做到这一点之后,我让另一个人自己动手了,这是一种非常好的方法。

legend.sizes = seq(80, 160, 20)
ax = list(zeroline = FALSE, showline = FALSE, showticklabels = FALSE, showgrid = FALSE)
mk = list(sizeref=0.1, sizemode="area")

p.map = plot_geo(DF, locationmode = 'USA-states') %>%
  add_markers(x = ~long, y = ~lat, color = ~Group, size = ~Value, marker = mk) %>%
  layout(geo = list(scope = 'usa'))

p.legend = plot_ly() %>%
  add_markers(x = 1, y = legend.sizes, size = legend.sizes, showlegend = F, marker = mk) %>%
  layout(xaxis = ax, yaxis = list(showgrid = FALSE))

subplot(p.legend, p.map, widths = c(0.1, 0.9))

enter image description here