Kir*_* K. 5 scale ggplotly r-plotly
我想创建一个具有对数刻度和根据记录数据计算的统计数据的箱线图(以及可能的其他图)。以下示例显示了逻辑。
数据如下:
d1 <- data.frame(x = rchisq(1000, 2), mod = c(rep('a', 500), rep('b', 500)))
Run Code Online (Sandbox Code Playgroud)
如果我预先转换数据,我会获得 y 轴上对数值的图。
plot_ly(d1, y = ~log10(x), color = ~mod, type = 'box')
Run Code Online (Sandbox Code Playgroud)
如果我在创建箱线图后转换 y 轴,我会得到一个箱线图,其中包含原始数据的须线长度和中位数以及 y 轴上对数刻度的原始数据。
plot_ly(d1, y = ~x, color = ~mod, type = 'box') %>%
layout(yaxis = list(type = "log", showgrid=T, ticks="outside", autorange=TRUE))
Run Code Online (Sandbox Code Playgroud)
我理想的结果是上面两张图的组合 - 第一张图片的箱线图和第二张图片的比例。它应该看起来像可以在 ggplot 中执行的操作:
d1 %>% ggplot(aes(y=x, alpha = 0.1, color = mod, fill = mod))+
geom_boxplot()+
scale_y_log10()
Run Code Online (Sandbox Code Playgroud)
我尝试使用 ggploly 将 ggplot 修改为plotly,但它丢失了比例并将其更改为第一张图片的比例。
任何人都可以帮助用plotly制作这样的图,或者如何用ggplotly保留y轴上的对数比例?
ggplot当您将对象转换为- 用于箱线图时,维护对数比例会变得更加困难ggplotly。你们非常接近plot_ly。只需添加tickvals=c(0.001,0.01,0.1,1,10)到您的布局中plot_ly,您将获得以下输出:
您可以计算出数据的范围并适当地定义为向量mytickvals<-c(1,10,100),然后在布局中将其指定为tickvals=mytickvals。