首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Plotly:双y轴图弄乱了线形图

Plotly:双y轴图弄乱了线形图
EN

Stack Overflow用户
提问于 2021-09-25 12:38:15
回答 1查看 63关注 0票数 0

我试着做一个降雨量和温度的双轴曲线图。我已经对底部的月份进行了排序,但这导致我的折线图搞砸了。如何确保添加的线使用相同的x轴?

代码语言:javascript
代码运行次数:0
运行
复制
temprain<-data.frame(month = c(1:12), 
   Train = c(250,220, 180,97,38,27,31,47,70,140,200,250), 
   Tair = c(17,16, 15,13,9,6,5,9,12,13,14,16))
tempseq<-seq(0,20,by=0.5)
rainseq<-seq(0,260,by=1)

xlab<-list(type = "category",
           categoryorder = "array",
           categoryarray = month.name,
           showgrid = TRUE,
           showline = TRUE,
           autorange = TRUE,
           showticklabels = TRUE,
           ticks = "outside",
           tickangle = 0
)

plot_ly(temprain) %>%
  add_bars(x = ~MonthName, y = ~Train, type = "bar", name = "Rain") %>%
  add_lines(x = ~MonthName, y = ~Tair, yaxis = "y2", name = "Temp") %>% 
  layout(xaxis = xlab,
    yaxis = list(showline = TRUE, side = "left", 
                 title = "Rainfall (mm)Temp", range = tempseq), 
    yaxis2 = list(showline = TRUE, side = "right", 
                  overlaying = "y",  title = "Air Temp (C)", range = rainseq), 
    showlegend = FALSE,  
    margin = list(pad = 0, b = 50, l = 50, r = 50)) 

我也试过了,但它不起作用,临时图表消失了

代码语言:javascript
代码运行次数:0
运行
复制
plot_ly(temprain, x = ~MonthName, y = ~Tair, name = "Temp") %>%
  add_bars(x = ~MonthName, y = ~Train, yaxis = "y2", type = "bar", name = "Rain") %>%
  layout(xaxis = xlab,
    yaxis = list(showline = TRUE, side = "left", 
                 title = "Air Temp (C)", range = tempseq),  
    yaxis2 = list(showline = TRUE, side = "right", 
                  overlaying = "y",
                 title = "Rainfall (mm)", range = rainseq), 
    showlegend = FALSE,  
    margin = list(pad = 0, b = 50, l = 50, r = 50))

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-26 13:01:14

以下是解决方案:

您的数据:

代码语言:javascript
代码运行次数:0
运行
复制
temprain<-data.frame(month = c(1:12), 
                     Train = c(250,220, 180,97,38,27,31,47,70,140,200,250), 
                     Tair = c(17,16, 15,13,9,6,5,9,12,13,14,16))

month生成月份缩写的列

代码语言:javascript
代码运行次数:0
运行
复制
mymonths <- c("Jan","Feb","Mar",
              "Apr","May","Jun",
              "Jul","Aug","Sep",
              "Oct","Nov","Dec")

# match the month numbers against abbreviations:
temprain$MonthAbb = mymonths[ temprain$month ]

# This is the code to archieving a consistent combined graph:
temprain$MonthAbb <- factor(temprain$MonthAbb, levels = c(as.character(temprain$MonthAbb)))

现在绘制您的数据:

代码语言:javascript
代码运行次数:0
运行
复制
fig <- plot_ly(temprain)
# Add the Train trace:
fig <- fig %>% add_trace(x = ~MonthAbb, y = ~Train, name = "Train", type = "bar")

ay <- list(
  tickfont = list(color = "red"),
  overlaying = "y",
  side = "right",
  title = "<b>Tair</b>")

# Add the Tair trace:
fig <- fig %>% add_trace(x = ~MonthAbb, y = ~Tair, name = "Tair", yaxis = "y2", mode = "lines+markers", type = "scatter")

fig <- fig %>% layout(yaxis2 = ay,
  xaxis = list(title="Month"),
  yaxis = list(title="<b>Train</b>"))%>%
  layout(xaxis = list(
           zerolinecolor = '#ffff',
           zerolinewidth = 2,
           gridcolor = 'ffff'),
         yaxis = list(
           zerolinecolor = '#ffff',
           zerolinewidth = 2,
           gridcolor = 'ffff')
  )

fig

输出:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69326227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档