Plotly中的第二个传奇基于颜色

时间:2017-11-10 20:27:35

标签: r plotly legend

我试图解决我的问题,并且没有在网上找到有用的解决方案。这是我正在绘制的数据样本(但对于数千行来说就像这样):

df <- data.frame(Institution = c('Inst1', 'Inst2', 'Inst3', 'Inst4', 'Inst5', 'Inst6', 'Inst7'), Score = c(120, 750, 1380, 560, 630, 640, 990), Measure1 = c(100, 500, 600, 700, 300, 400, 550), Measure2 = c(1.2, 1.5, 2.3, 0.8, 2.1, 1.6, 1.8), Country = c('China', 'China', 'Norway', 'USA', 'France', 'USA', 'USA'), Colors = c('#ff0000', '#ff0000', '#71C671', '#808080', '#00BCDD', '#808080', '#808080'), CriteriaX = c('no', 'no', 'no', 'no', 'no', 'yes', 'yes'))

我正在使用Plotly以两种方式同时绘制这些数据:排名前20的机构(按其分数排名),以及根据CriteriaX。这是我的代码:

top_twenty <- df %>% filter(rank(desc(df$Score))<=20)
critX <- data.frame(df[df$CriteriaX == "yes",])

g = plot_ly() %>%
    add_trace(data = top_twenty, 
              x = ~Measure1, 
              y = ~Measure2, 
              type = 'scatter',
              mode = 'markers',
              name = 'Top 20',
              marker = list(size = 20,
                            opacity = 0.5,
                            color = ~as.character(Colors)) %>%
    add_trace(data = critX, 
              x = ~Measure1,
              y = ~Measure2,
              type = 'scatter',
              mode = 'markers',
              name = 'Criteria X',
              marker = list(size = 10,
                            opacity = 0.5, 
                            color = 'green')) %>%
    add_trace(data = top_twenty,
              x = ~Measure1, 
              y = ~Measure2,
              type = 'scatter',
              mode = 'markers',
              showlegend = F,
              marker = list(size = 0.1,
                            color = ~as.character(Colors),
                            colorbar = list(len = 0.8, 
                                            y = 0.3,
                                            title = 'Country')))

我要做的是保留从前两个轨迹生成的与尺寸相关的图例,还可以根据绘制的国家/地区的颜色创建其他图例。第三个跟踪是这种尝试(但不起作用)。

我一直在想弄清楚如何使用我的十六进制颜色和相应的国家/地区名称填充颜色条。颜色必须来自我的数据集中的预设十六进制颜色(再次,这是巨大的)。

此外,它不一定是一个颜色条 - 主要是,我想有两个传说。一个基于来自我的数据集的预定十六进制颜色,一个基于绘图标记大小(前20个/标准X)。我还希望基于颜色的图例包含相应的国家/地区名称作为标签。

帮助?

0 个答案:

没有答案