2016-07-29 2 views
0

Я уверен, что есть очень простой способ сделать это, но я не могу, чтобы жизнь меня определяла. Я делаю график рассеяния в Plot_ly. Каждой точке, которую я рисую, присвоен ярлык, например. Pass, High, Low, Sigma высокий и т.д. ...Плоское присвоение цветов на основе метки

enter image description here

Моя проблема заключается в том, что я не могу показаться, чтобы исправить то, что цвет plot_ly присваивает каждой этикетке. Я хочу, чтобы Pass всегда был белым, высоким, чтобы всегда быть зеленым и т. Д., Но кажется, что он случайно присваивает цвета каждый раз.

Вот код, я использую для построения

 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

Какой пакет содержит plot_ly? Не удалось найти. – Sia

+1

Не могли бы вы предоставить минимальный набор данных для воспроизведения? Например. объекты PT, XAVB, YAVB. Кроме того, добавьте информацию о пакете, который вы используете («plotly»), пожалуйста .. – Arcoutte

+0

как @Arcoutte предложил, пожалуйста, поделитесь своими данными. Вы можете использовать dput() в своем наборе данных вместо публикации изображения кадра данных. – epo3

ответ

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 как вектор с именованными компонентами, чтобы определить соответствие между вашими ярлыками и вашими цветами. Затем он создает график, назначающий цвета для свойства 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))) 
+0

Это отлично работает! Огромное спасибо :) – Marcus

Смежные вопросы