Plotly scatterternary - проблемы с непрерывной цветовой эстетикой - PullRequest
0 голосов
/ 27 марта 2020

Я обнаружил проблему при создании троичных диаграмм в R с использованием графика. Если цветовая эстетика c является непрерывной переменной, то троичная диаграмма имеет двоичную диаграмму на заднем плане. Дискретная цветовая эстетика, кажется, работает нормально. Кто-нибудь знает исправление?

library(tidyverse)
library(plotly)



# Make a dataframe

df<-data.frame(ID = 1:6,
                ID2 = c(rep("B14",4),"B16","B16"),
                Location = c(40.9,96,120,308.5,322,420),
                Classifier = c(rep("A",3),rep("B",3)),
                A = c(0.06,0.06,0.02,0.02,0.01,0.01),
                B = c(0.04,0.01,0.03,0.04,0.02,0.06),
                C= c(0.26,0.06,0.43,0.35,0.29,0.74),
                X = c(363,696,757,1650,609,392)
                )

Пример тройной с дискретными цветами

# Colours by discrete variable work fine 

df %>% 
  plot_ly(
    a = ~A,
    b = ~B,
    c = ~C,
    text = ~ID,
    color = ~Classifier,
    colors = "Set1",
    type = 'scatterternary',
    mode = 'markers',
    marker = list( 
      symbol ='circle',
      opacity = 0.6,
      size = 15
    )) 

Цвета с помощью непрерывной переменной создают две дополнительные оси на фоне тройной.

df %>% 
  plot_ly(
    a = ~A,
    b = ~B,
    c = ~C,
    text = ~ID,
    color = ~X,
    colors = "Spectral",
    type = 'scatterternary',
    mode = 'markers',
    marker = list( 
      symbol ='circle',
      opacity = 0.6,
      size = 15
    )) 

enter image description here

1 Ответ

1 голос
/ 30 марта 2020

Это не исправление - больше маски для проблемы. Вы можете скрыть оси x и y следующим образом:

ax <- list(
  title = "",
  zeroline = FALSE,
  showline = FALSE,
  showticklabels = FALSE,
  showgrid = FALSE
)

# use your df:
df %>% 
  plot_ly(
    a = ~A,
    b = ~B,
    c = ~C,
    text = ~ID,
    color = ~X,
    colors = "Spectral",
    type = 'scatterternary',
    mode = 'markers',
    marker = list( 
      symbol ='circle',
      opacity = 0.6,
      size = 15
    )) %>%
  layout(xaxis = ax, yaxis = ax)
...