我试图解决我的问题,并且没有在网上找到有用的解决方案。这是我正在绘制的数据样本(但对于数千行来说就像这样):
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)。我还希望基于颜色的图例包含相应的国家/地区名称作为标签。
帮助?