我确信有一种非常简单的方法可以做到这一点,但我不能为我的生活弄清楚。我在Plot_ly中做了一个散点图。 我正在绘制的每个点都被分配了一个标签,例如通过,高,低,西格玛高等...
我的问题是我似乎无法修复plot_ly分配给每个标签的颜色。 我希望Pass始终为White,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)))
任何帮助都会非常感激,因为我已经坚持了很久!
谢谢!
答案 0 :(得分:1)
您在帖子中描述了label
,但数据中缺少label
,因此我向label
添加了PT
列,其中一些标签与颜色相对应似乎在你的评论中建议。 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
作为带有命名组件的向量,以定义标签和颜色之间的映射。然后,它会根据marker
和color
创建为color_map
属性label
指定颜色的图表。 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)))