用散点图覆盖分组条形图

Posted

技术标签:

【中文标题】用散点图覆盖分组条形图【英文标题】:Overlay a grouped bar chart with scatter in plotly 【发布时间】:2019-07-02 15:13:51 【问题描述】:

我正在尝试将散点图叠加在分组条形图的顶部。然而,在简单的条形图中,散点正确地放置在各个条的顶部,而在分组条形图中,散点不会自动调整。

这是一个演示问题的示例:

set.seed(1)
d1 <- data.frame(x=rep(c('a', 'b', 'c'), each=2),
                 y=rnorm(6, mean=10),
                 c=rep(c('q', 'r'), times=3))
d2 <- d1[d1$c=='q', ]

p1 <- plot_ly(data=d2, x=~x, y=~y, type='bar')
p2 <- add_trace(p1, data=d2, x=~x, y=~y, 
                type='scatter', mode='markers', marker=list(size=20))
p3 <- plot_ly(data=d1, x=~x, y=~y, color=~c, type='bar')
p4 <- add_trace(p3, data=d1, x=~x, y=~y, 
                type='scatter', mode='markers', marker=list(size=20))

subplot(p1, p2, p3, p4, nrows=2)

这会生成下图:

而在右上角的面板 (p2) 中,点被放置在它们各自的条上,而在右下角 (p4) 中,点不会根据颜色因子进行调整。

我可以想象通过将x 设置为数字变量并手动、少量调整点等来解决这个问题。但这似乎相当乏味。有没有简单的方法来进行调整?

(显然,目标不是让单个点显示每个条的顶部,而是用整个云覆盖条)

【问题讨论】:

【参考方案1】:

取决于你想要做什么,你可以使用error bars,你可以使用widththicknesscolor参数让它看起来像一个普通的散点图(width指到末端的线,thickness 到胡须,thickness = 0 应该把它们拿出来)。

【讨论】:

我知道这可能对单个点起作用,但是您如何使它对整个散点云起作用?

以上是关于用散点图覆盖分组条形图的主要内容,如果未能解决你的问题,请参考以下文章

100天精通Python(可视化篇)——第82天:matplotlib绘制不同种类炫酷散点图参数说明+代码实战(二维散点图三维散点图散点图矩阵)

R语言可视化:散点图散点图和折线图(line charts)3D散点图旋转3D散点图气泡图corrgram包可视化相关性矩阵马赛克图( Mosaic plots)hexbin密度图

R数据可视化初阶-散点图散点图矩阵相关系数

还在用Excel画散点图?不试试极坐标散点图?

可视化实验十:利用Python绘制棒图散点图

可视化实验十:利用Python绘制棒图散点图