来自 DataFrames 的点箱图

Posted

技术标签:

【中文标题】来自 DataFrames 的点箱图【英文标题】:Dot-boxplots from DataFrames 【发布时间】:2014-06-24 12:13:16 【问题描述】:

Pandas 中的数据框有一个 boxplot 方法,但是有没有办法在 Pandas 中创建 dot-boxplots,或者使用 seaborn?

点箱图是指显示图内的实际数据点(或它们的相关样本)的箱线图,例如像下面的例子(在 R 中获得)。

【问题讨论】:

这是你要找的pandas.pydata.org/pandas-docs/version/0.13.1/generated/… 谢谢@pss 我知道了。我的问题专门关于点箱线图。我想知道以后是否有一种简单的方法可以添加点(注意点沿x 轴的随机化,以便于查看它们) 使用来自matplotlib 的自定义绘图,将其作为ax 参数提供给pandas.boxplot,然后在同一个绘图中制作一个点图。 感谢@CTZhu 我无法访问该链接(Github 上出现 404 错误)(如果您只是粘贴该链接应该可以使用) 为什么我把它粘贴为代码?对此感到抱歉。 python 中的蜂群图:nbviewer.ipython.org/github/mgymrek/pybeeswarm/blob/master/… 【参考方案1】:

对于与 OP 的问题(使用 Pandas)相关的更准确的答案:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data = pd.DataFrame( "A":np.random.normal(0.8,0.2,20),
                      "B":np.random.normal(0.8,0.1,20), 
                      "C":np.random.normal(0.9,0.1,20) )

data.boxplot()

for i,d in enumerate(data):
    y = data[d]
    x = np.random.normal(i+1, 0.04, len(y))
    plt.plot(x, y, mfc = ["orange","blue","yellow"][i], mec='k', ms=7, marker="o", linestyle="None")

plt.hlines(1,0,4,linestyle="--")


旧版本(更通用):

使用 matplotlib :

import numpy as np
import matplotlib.pyplot as plt

a = np.random.normal(0,2,1000)
b = np.random.normal(-2,7,100)
data = [a,b]

plt.boxplot(data) # Or you can use the boxplot from Pandas

for i in [1,2]:
    y = data[i-1]
    x = np.random.normal(i, 0.02, len(y))
    plt.plot(x, y, 'r.', alpha=0.2)

这给出了:

灵感来自this tutorial

希望这会有所帮助!

【讨论】:

【参考方案2】:

使用 stripplot 函数的 seaborn 版本 0.6(目前在 github 上的 master 分支中)可以实现这一点。这是一个例子:

import seaborn as sns
tips = sns.load_dataset("tips")
sns.boxplot(x="day", y="total_bill", data=tips)
sns.stripplot(x="day", y="total_bill", data=tips,
              size=4, jitter=True, edgecolor="gray")

【讨论】:

以上是关于来自 DataFrames 的点箱图的主要内容,如果未能解决你的问题,请参考以下文章

来自 Spark / Dataframes 的 AWS SSE-KMS 加密

python 连接Pandas DataFrames(来自http://pandas.pydata.org/pandas-docs/stable/merging.html)

Spark SQL Dataframes - 如果使用 RDD.collectAsMap() 创建地图,则从 DataFrameNaFunctions 替换函数不起作用

R绘制水平箱图(horizontal boxplot)

R语言ggplot2可视化箱图(box plot),在分组箱图对应的最大值最小值中位数25%分位数75%分位数等数值指标已知的情况下可视化箱图

R语言绘制箱图(Base R and ggplot2)