簡體   English   中英

Plotly colorbar與單一觀察

[英]Plotly colorbar with single observation

我正在嘗試繪制一個條形圖,其中條形圖基於第三個“概率”變量着色。 我想將顏色條設置為固定為0:100並繪制數據的不同子集。 一切都很好,直到我的子集只包含一個觀察,然后顏色不再跟隨顏色條。 也許有人可以指出我正確的方向? 例:

> data <- data.table(name = c("foo", "bar", "bar", "bar"), value = c(10, 15, 40, 35), probability = c(0.9, 0.4, 0.8, 0.3), id = c("one", "two", "three", "four"))
> 
> data
   name value probability    id
1:  foo    10         0.9   one
2:  bar    15         0.4   two
3:  bar    40         0.8 three
4:  bar    35         0.3  four
> 
> data1 <- data[name == "bar"]
> data2 <- data[name == "foo"]
> 
> p1 <- plot_ly(data1,
+        x = ~value,
+        y = ~id,
+        type = "bar",
+        orientation = "h",
+        marker = list(color = ~(probability * 100), colorbar = list(title = "Probability", cmin = 0, cmax = 100))
+ )
> 
> p2 <- plot_ly(data2,
+         x = ~value,
+         y = ~id,
+         type = "bar",
+         orientation = "h",
+         marker = list(color = ~(probability * 100), colorbar = list(title = "Probability", cmin = 0, cmax = 100))
+ )
> 
> plotly::subplot(p1, p2)

這是結果圖:

我認為cmincmaxMarker而不是Colorbar屬性,所以改變了

marker = list(
    color = ~(probability * 100),
    colorbar = list(title = "Probability", cmin = 0, cmax = 100)
)

marker = list(
    color = ~(probability * 100),
    colorbar = list(title = "Probability"),
    cmin = 0,
    cmax = 100
)

應該管用。

你好陌生人,

我認為Vlizana建議實際上存在Rplotly的錯誤。 如果你只有一行傳說不能正常工作。 因此,如果在這些情況下添加新行,它將起作用。 如果行有NA而不是值,您將收到警告,但它不會出現在圖中。

實現此目的的代碼如下:

data <- data.table(name = c("foo", "bar", "bar", "bar"), value = c(10, 15, 40, 35), probability = c(0.9, 0.4, 0.8, 0.3), id = c("one", "two", "three", "four"))

data1 <- data[name == "bar"]
data2 <- data[name == "foo"]
if(nrow(data2)== 1){
  add_data2 <- data2[2L] 
  add_data2[,1] <- "Delete"
  data2 <- rbind(data2, add_data2)
}

p1 <- plot_ly(data1,
              x = ~value,
              y = ~id,
              type = "bar",
              orientation = "h",
              marker = list(color = ~probability * 100 , colorbar = list(title = "Probability", cmin = 0, cmax = 100, cauto = F))
)
p2 <- plot_ly(data2,
              x = ~value,
              y = ~id,
              type = "bar",
              orientation = "h",
              marker = list(color = ~probability * 100, colorbar = list(title = "Probability", cmin = 0, cmax = 100, cauto = F))
)
plotly::subplot(p1, p2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM