簡體   English   中英

多個 y 軸使用不同長度的數據繪圖

[英]Multiple y-axes using plotly with data of different length

使用 plotly 我經常在處理多線圖和不同長度的數據時遇到問題。 然后我找到了這個解決方案:


library(plotly)

df1 <- data.frame(
  id = c("Honda", "Honda", "Honda", "Merc", "Merc", "Merc", "Toyota", "Toyota"),
  date = c('10/30/12', '10/31/12', '11/1/12', '11/2/12', '10/30/12', '10/31/12', '11/1/12', '11/3/12'),
  Value = c(2, 3, 3, 4, 1, 2, 3, 2)
)

df1$date <- as.Date(df1$date, "%m/%d/%y")

df1 %>%
  group_by(id) %>%
  plot_ly(x=~date, y=~Value, type='scatter', color=~id, mode="lines+markers") %>%
  layout(xaxis=list(title="Date"),yaxis=list(title="Cars Sold"))

現在我面臨下一個問題。 如何在此示例中添加多個 y 軸? 是否還有可能使用 R 擁有超過 2 個 y 軸並像頁面最底部的這個Python 示例那樣左右排列它們? 例如本田和 Merc 左,豐田右。 我在這里找到了一個解決方案,但數據的長度相同,所以這對我不起作用。

我想防止像在這個數據框中那樣按不同的數量級縮放數據:

df1 <- data.frame(
  id = c("Honda", "Honda", "Honda", "Merc", "Merc", "Merc", "Toyota", "Toyota"),
  date = c('10/30/12', '10/31/12', '11/1/12', '11/2/12', '10/30/12', '10/31/12', '11/1/12', '11/3/12'),
  Value = c(0.02, 0.03, 0.03, 4, 1, 2, 3, 2)
)

請檢查以下內容:

library(plotly)

df1 <- data.frame(
  id = c("Honda", "Honda", "Honda", "Merc", "Merc", "Merc", "Toyota", "Toyota"),
  yaxis = c("y", "y", "y", "y2", "y2", "y2", "y3", "y3"),
  date = c('10/30/12', '10/31/12', '11/1/12', '11/2/12', '10/30/12', '10/31/12', '11/1/12', '11/3/12'),
  Value = c(0.02, 0.03, 0.03, 4, 1, 2, 3, 2)
)

df1$date <- as.Date(df1$date, "%m/%d/%y")

y2 <- list(
  tickfont = list(color = "red"),
  overlaying = "y",
  side = "left",
  title = "Merc",
  position=0.1,
  showgrid = FALSE
)

y3 <- list(
  tickfont = list(color = "green"),
  overlaying = "y",
  side = "right",
  title = "Toyota",
  showgrid = FALSE
)

df1 %>%
  group_by(id) %>%
  plot_ly(x=~date, y=~Value, type='scatter', color=~id, mode="lines+markers", yaxis=~yaxis) %>%
  layout(xaxis=list(title="Date", domain = list(0.15, 0.95)), yaxis=list(title="Honda"), yaxis2=y2, yaxis3=y3)

結果

有關更多信息,請參閱

暫無
暫無

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

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