python - 在图表上绘制单点

标签 python matplotlib

我有一个 fiddle 情节,看起来像这样:

enter image description here

我想在 fiddle 顶部的每个 x 值上绘制几个单独的点(或线、十字、点,以最简单的为准),如下所示:

enter image description here

我该怎么做?

这是制作 fiddle 图的代码(参见 Violin Plot with Matplotlib )

from matplotlib.pyplot import figure, show
from scipy.stats import gaussian_kde
from numpy.random import normal
from numpy import arange

def violin_plot(ax, data, pos, bp=False):
    '''                                                                                                                                                                                          
    create violin plots on an axis                                                                                                                                                               
    '''
    dist = max(pos)-min(pos)
    w = min(0.15*max(dist,1.0),0.5)
    for d,p in zip(data,pos):
        k = gaussian_kde(d) #calculates the kernel density                                                                                                                                       
        m = k.dataset.min() #lower bound of violin                                                                                                                                               
        M = k.dataset.max() #upper bound of violin                                                                                                                                               
        x = arange(m,M,(M-m)/100.) # support for violin                                                                                                                                          
        v = k.evaluate(x) #violin profile (density curve)                                                                                                                                        
        v = v/v.max()*w #scaling the violin to the available space                                                                                                                               
        ax.fill_betweenx(x,p,v+p,facecolor='y',alpha=0.3)
        ax.fill_betweenx(x,p,-v+p,facecolor='y',alpha=0.3)
    if bp:
        ax.boxplot(data,notch=1,positions=pos,vert=1)

if __name__=="__main__":
    pos = range(5)
    data = [normal(size=100) for i in pos]
    fig=figure()
    ax = fig.add_subplot(111)
    violin_plot(ax,data,pos,bp=1)
    fig.savefig("violins.gif")

最佳答案

只需在另一个绘图之后绘制额外的数据:

from matplotlib.pyplot import figure, show
from scipy.stats import gaussian_kde
from numpy.random import normal
from numpy import arange

def violin_plot(ax, data, pos, bp=False):
    '''
    create violin plots on an axis
    '''
    dist = max(pos)-min(pos)
    w = min(0.15*max(dist,1.0),0.5)
    for d,p in zip(data,pos):
        k = gaussian_kde(d) #calculates the kernel density
        m = k.dataset.min() #lower bound of violin
        M = k.dataset.max() #upper bound of violin
        x = arange(m,M,(M-m)/100.) # support for violin
        v = k.evaluate(x) #violin profile (density curve)
        v = v/v.max()*w #scaling the violin to the available space
        ax.fill_betweenx(x,p,v+p,facecolor='y',alpha=0.3)
        ax.fill_betweenx(x,p,-v+p,facecolor='y',alpha=0.3)
    if bp:
        ax.boxplot(data,notch=1,positions=pos,vert=1)

if __name__=="__main__":
    pos = range(5)
    data = [normal(size=100) for i in pos]
    fig=figure()
    ax = fig.add_subplot(111)
    violin_plot(ax,data,pos,bp=1)

    data_x = [0, 1, 2, 2, 3, 4]
    data_y = [1.5, 1., 0.7, 2.5, 1, 1.5]
    ax.plot(data_x, data_y, 'or')
    fig.savefig("violins.gif")

给出

augmented picture

关于python - 在图表上绘制单点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15382887/

相关文章:

python - 如何在 matplotlib 中使用日期时间索引增加 xticks?

matplotlib - matplotlib contourf 图像文件的大小

python - GAE : how to add new data in a memcache var

python - 在数据框中查找并替换半通用字符串?

python - 为什么 os 模块不运行 wget cmd 命令?

python - 导入错误:matplotlib 需要 dateutil;将 matplotlib.pyplot 导入为 plt

python - 如何使用 gui 工具确定开放图形的图形尺寸?

python - 使用列表类型的值(按列表值的顺序)从字典创建 OrderedDict

python - mako 模板中 IF 语句的问题

python - 如何使用 Matplotlib 强制错误栏最后呈现