首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R-不正确Y轴中的组条形图

R-不正确Y轴中的组条形图
EN

Stack Overflow用户
提问于 2017-05-09 11:40:54
回答 2查看 205关注 0票数 0

我正试图在R中构建一个分组条形图,我已经粘贴了下面的数据。我一直在使用巧妙地使用来构建图表。问题是,Y轴上的数字是不适当的,因为它们没有按升序增加。我还发了一张图的图片。

有人能指出我哪里出了问题吗?

达菲

代码语言:javascript
复制
chart.supp.part.defect.matrix


     Supplier PaintMarking45 Seal78 AirConditioning57 Engine34 CargoCompartment543 Insulation11
1     HJRU              8   <NA>              <NA>        1                <NA>         <NA>
2     DJDU           <NA>      1              <NA>     <NA>                <NA>         <NA>
3     DEF7           <NA>      3                54     <NA>                <NA>         <NA>
4      A23           <NA>   <NA>              <NA>        7                <NA>         <NA>
5      A52              3   <NA>              <NA>     <NA>                   2         <NA>
6     FJUE             65   <NA>                 1     <NA>                <NA>           11
7      A31           <NA>      1                 5     <NA>                <NA>         <NA>
8     DJHD           <NA>   <NA>              <NA>     <NA>                <NA>         <NA>
9      A38              4   <NA>                22     <NA>                <NA>         <NA>

生成图表的代码

代码语言:javascript
复制
 title <- paste( "Supplier vs Defect")

p3 <- plot_ly(chart.supp.part.defect.matrix, x = ~Supplier, y = ~PaintMarking45, type = 'bar', name = 'Paint/Marking-45') %>%
  add_trace(y = ~Seal78,name = 'Seal-78') %>%
  add_trace(y = ~AirConditioning57,name = 'Air conditioning - 57') %>%
  add_trace(y = ~Engine34,name = 'Engine-34') %>%
  add_trace(y = ~CargoCompartment543,name = 'Cargo compartment-543') %>%
  add_trace(y = ~Insulation11 ,name = 'Insulation -11') %>%
  add_trace(y = ~Insulation6,name = 'Insulation-6') %>%
  add_trace(y = ~Engine11,name = 'Engine-11') %>%
  add_trace(y = ~Propulsion32,name = 'Propulsion-32') %>%
  layout(yaxis = list(title = 'Defect Count'), barmode = 'group') %>%
  layout(title = title)

ggplotly(p3)

图表

编辑

代码语言:javascript
复制
dput(chart.supp.part.defect.matrix)


structure(list(Supplier = structure(c(9L, 6L, 5L, 1L, 4L, 8L, 
2L, 7L, 3L), .Label = c(" A23", " A31", " A38", " A52", " DEF7", 
"DJDU", "DJHD", "FJUE", "HJRU"), class = "factor"), PaintMarking45 = structure(c(4L, 
NA, NA, NA, 1L, 3L, NA, NA, 2L), .Label = c("3", "4", "65", "8"
), class = "factor"), Seal78 = structure(c(NA, 1L, 2L, NA, NA, 
NA, 1L, NA, NA), .Label = c("1", "3"), class = "factor"), AirConditioning57 = structure(c(NA, 
NA, 4L, NA, NA, 1L, 3L, NA, 2L), .Label = c("1", "22", "5", "54"
), class = "factor"), Engine34 = structure(c(1L, NA, NA, 2L, 
NA, NA, NA, NA, NA), .Label = c("1", "7"), class = "factor"), 
    CargoCompartment543 = structure(c(NA, NA, NA, NA, 1L, NA, 
    NA, NA, NA), .Label = "2", class = "factor"), Insulation11 = structure(c(NA, 
    NA, NA, NA, NA, 1L, NA, NA, NA), .Label = "11", class = "factor"), 
    Insulation6 = structure(c(NA, NA, NA, NA, NA, NA, 1L, NA, 
    NA), .Label = "7", class = "factor"), Engine11 = structure(c(NA, 
    NA, NA, NA, NA, NA, 2L, 1L, NA), .Label = c("54", "8"), class = "factor"), 
    Propulsion32 = structure(c(NA, NA, NA, NA, NA, NA, NA, NA, 
    1L), .Label = "2", class = "factor")), .Names = c("Supplier", 
"PaintMarking45", "Seal78", "AirConditioning57", "Engine34", 
"CargoCompartment543", "Insulation11", "Insulation6", "Engine11", 
"Propulsion32"), row.names = c(NA, -9L), class = "data.frame")
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-09 14:11:23

除了Adam的方法之外,您还可以通过将yaxis type设置为linear来强制Plotly将数据解释为数字

代码语言:javascript
复制
layout(yaxis=list(type='linear'))

票数 1
EN

Stack Overflow用户

发布于 2017-05-09 12:46:00

正如@neilfws在评论中提到的那样,问题是您的y访问数据是根据因素构建的。您可以尝试在数据读取(正如@neilfws所提到的那样)上修复这个问题,或者在绘图之前强迫您的数据为数字。下面是你如何做后一件事。

代码语言:javascript
复制
chart.supp.part.defect.matrix[,2:10] <- lapply(chart.supp.part.defect.matrix[,2:10], as.numeric)

p3 <- plot_ly(chart.supp.part.defect.matrix, x = ~Supplier, y = ~PaintMarking45, type = 'bar', name = 'Paint/Marking-45') %>%
  add_trace(y = ~Seal78,name = 'Seal-78') %>%
  add_trace(y = ~AirConditioning57,name = 'Air conditioning - 57') %>%
  add_trace(y = ~Engine34,name = 'Engine-34') %>%
  add_trace(y = ~CargoCompartment543,name = 'Cargo compartment-543') %>%
  add_trace(y = ~Insulation11 ,name = 'Insulation -11') %>%
  add_trace(y = ~Insulation6,name = 'Insulation-6') %>%
  add_trace(y = ~Engine11,name = 'Engine-11') %>%
  add_trace(y = ~Propulsion32,name = 'Propulsion-32') %>%
  layout(yaxis = list(title = 'Defect Count'), barmode = 'group') %>%
  layout(title = title)

p3

此外,在这种情况下,您不需要调用ggplotly。只有当您想要使用ggplot2构建您的绘图,然后将它的交互性添加到ggplot对象时,才需要该函数。

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

https://stackoverflow.com/questions/43868854

复制
相关文章

相似问题

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