根据标签分配颜色
Plotly assigning colors based on label
我确信有一种非常简单的方法可以做到这一点,但我终究无法弄清楚。我正在 Plot_ly 中绘制散点图。
我正在绘制的每个点都被分配了一个标签,例如通过、高、低、Sigma 高等...
我的问题是我似乎无法确定 plot_ly 分配给每个标签的颜色。
我希望 Pass 永远是白色,High 永远是绿色等等,但它似乎每次都随机分配颜色。
这是我用来绘制的代码
library("plotly")
p <- plot_ly(PT,
type='scatter',
x=XAVG,
y=YAVG,
mode= "markers",
marker=list(size=3,bgcolor="#e5e5e5"),
color = label,
colors=c("yellow","red","cyan","magenta",'blue',"green3","white"),
zeroline=F,
text=paste("MEAS = ",PT$MEAS,"Head_ID = ",substr(PT$SHD_ID,2,5)))
任何帮助将不胜感激,因为我已经坚持了很长时间!
谢谢!
您在 post 中描述了 label
,但您的数据中缺少 label
,因此我在 PT
中添加了一个 label
列,其中包含一些与您评论中建议的颜色相对应的标签。 PT
现在是:
SHD_ID MEAS XAVG YAVG PPKLOW PPKUP PKSLOW PKSUP colour label
1 1L3P1 0.300018 -5774.5 94350.5 FALSE FALSE TRUE FALSE blue Fail
2 1LSP0 0.300018 14245.5 94350.5 FALSE FALSE TRUE FALSE blue Fail
3 1L802 600.000000 -25024.5 94350.5 FALSE FALSE FALSE TRUE green3 Mean
4 ILSOl 0.300018 -5004.5 94350.5 FALSE FALSE TRUE FALSE blue Fail
5 1LSOO 0.300018 15015.5 94350.5 FALSE FALSE TRUE FALSE blue Fail
6 1LSN2 600.000000 -24254.5 94350.5 FALSE FALSE FALSE TRUE green3 Mean
代码首先将 color_map
创建为一个向量,其中包含命名组件以定义标签和颜色之间的映射。然后它根据 color_map
和 label
创建绘图,将颜色分配给 marker
属性 color
。 label
值也用于创建 group
以便在图例中显示标签的颜色分配。我把标记放大了,这样颜色更容易看清。
#
# create a map between colors and labels
# colors ending in numbers are not recognized by plot_ly
#
color_map <- c(Pass="yellow", High="red", Low= "cyan",
Sigma= "magenta", Mean='limegreen', Fail="blue", Median="violet")
#
# plot points using color_map to assign colors by label
# show label colors in legend
#
p <- plot_ly(PT,
type='scatter',
x=XAVG,
y=YAVG,
mode= "markers",
marker=list(size=10, bgcolor="#e5e5e5",
color=color_map[label]),
group = label,
zeroline=FALSE,
text=paste("MEAS = ", MEAS,"Head_ID = ",substr(SHD_ID,2,5)))
我确信有一种非常简单的方法可以做到这一点,但我终究无法弄清楚。我正在 Plot_ly 中绘制散点图。 我正在绘制的每个点都被分配了一个标签,例如通过、高、低、Sigma 高等...
我的问题是我似乎无法确定 plot_ly 分配给每个标签的颜色。 我希望 Pass 永远是白色,High 永远是绿色等等,但它似乎每次都随机分配颜色。
这是我用来绘制的代码
library("plotly")
p <- plot_ly(PT,
type='scatter',
x=XAVG,
y=YAVG,
mode= "markers",
marker=list(size=3,bgcolor="#e5e5e5"),
color = label,
colors=c("yellow","red","cyan","magenta",'blue',"green3","white"),
zeroline=F,
text=paste("MEAS = ",PT$MEAS,"Head_ID = ",substr(PT$SHD_ID,2,5)))
任何帮助将不胜感激,因为我已经坚持了很长时间!
谢谢!
您在 post 中描述了 label
,但您的数据中缺少 label
,因此我在 PT
中添加了一个 label
列,其中包含一些与您评论中建议的颜色相对应的标签。 PT
现在是:
SHD_ID MEAS XAVG YAVG PPKLOW PPKUP PKSLOW PKSUP colour label
1 1L3P1 0.300018 -5774.5 94350.5 FALSE FALSE TRUE FALSE blue Fail
2 1LSP0 0.300018 14245.5 94350.5 FALSE FALSE TRUE FALSE blue Fail
3 1L802 600.000000 -25024.5 94350.5 FALSE FALSE FALSE TRUE green3 Mean
4 ILSOl 0.300018 -5004.5 94350.5 FALSE FALSE TRUE FALSE blue Fail
5 1LSOO 0.300018 15015.5 94350.5 FALSE FALSE TRUE FALSE blue Fail
6 1LSN2 600.000000 -24254.5 94350.5 FALSE FALSE FALSE TRUE green3 Mean
代码首先将 color_map
创建为一个向量,其中包含命名组件以定义标签和颜色之间的映射。然后它根据 color_map
和 label
创建绘图,将颜色分配给 marker
属性 color
。 label
值也用于创建 group
以便在图例中显示标签的颜色分配。我把标记放大了,这样颜色更容易看清。
#
# create a map between colors and labels
# colors ending in numbers are not recognized by plot_ly
#
color_map <- c(Pass="yellow", High="red", Low= "cyan",
Sigma= "magenta", Mean='limegreen', Fail="blue", Median="violet")
#
# plot points using color_map to assign colors by label
# show label colors in legend
#
p <- plot_ly(PT,
type='scatter',
x=XAVG,
y=YAVG,
mode= "markers",
marker=list(size=10, bgcolor="#e5e5e5",
color=color_map[label]),
group = label,
zeroline=FALSE,
text=paste("MEAS = ", MEAS,"Head_ID = ",substr(SHD_ID,2,5)))