Plotly R: Cant get points to plot when two values present per x factor level

偶尔善良 提交于 2019-12-29 08:17:26

问题


I have a data frame like this:

dput(df)
structure(list(x = structure(c(1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 
4L, 5L), .Label = c("41197708", "41223094", "41244000", "41244435", 
"41244936"), class = "factor"), y = c(1, 1, 1, 1, 1, 2, 2, 2, 
2, 2)), .Names = c("x", "y"), row.names = c(NA, -10L), class = "data.frame")

Trying to print a scatter plot with points as follows:

plot_ly(df, x = levels(x), y = y, mode = 'markers')

I only see points corresponding to y = 1 and not y = 2. Any idea why?

The following works in plotly, but then it treats x axis values as numeric / continuous (not what I want):

plot_ly(df, x = x, y = y, mode = 'markers')

回答1:


Isn't this a duplicate of your previous question and related to this github issue ?

Currently you need to manually specify that you have a categorical axis.

plot_ly(df, x = x, y = y, mode = "markers") %>% layout(xaxis = list(type = "category"))

Right now we just sent the factor levels as a string to plotly.js

plotly_build(plot_ly(df, x = x, y = y, mode = "markers"))$data[[1]]$x

Based on those strings, plotly.js (correctly) thinks that you want a numeric axis. In the future, we should set smarter axis type defaults based on the variable mappings.

If you do:

plot_ly(df, x = x, y = y, mode = "markers") %>% 
      layout(xaxis = list(type = "category"))

You'll get:



来源:https://stackoverflow.com/questions/37284287/plotly-r-cant-get-points-to-plot-when-two-values-present-per-x-factor-level

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!