2017-12-18 260 views
-1

我有一个情节,有几个数据点,我想保持原样。剧情中的小提琴曲风格直方图

其中一个数据点是'更好',因为它不仅带有值,而且带有分配给它的概率。

我想通过绘制正常数据点来显示概率,并且用测量的PDF显示一个小提琴图。

到目前为止,我已经用散点图上绘制它看起来有点像这样(在M​​WE)做到了这一点:

import numpy as np 
import matplotlib.pyplot as plt 



def plot(): 
    x = np.linspace(0,20,20) 
    data = x + np.random.rand(len(x)) 
    y = 2*x 
    histo = np.array([1,2,3,10,20,10,3,1]) 
    y_better = np.array([9.5,9.8,10,11.5,12,13,15,16]) 

    ax = plt.subplot() 
    ax.plot(x,data,'o') 
    ax.scatter(np.ones_like(histo)*x[10],y_better,c=histo,norm=matplotlib.colors.LogNorm(),s=100) 
    plt.show() 

plot() 

,看起来像这样:

enter image description here

虽然这是有效的,并且传递信息 - 但看起来不太酷。

根据@jadsq的建议,我发现violinplots,看起来完全像我想要的!

我现在有问题,小提琴图函数会假定数据,然后方便地绘制PDF。在我的情况下,我已经有一个测量PDF(这是我想绘制)。我如何制作一张看起来像小提琴情节的情节,但是用我的PDF(所以没有估算)?

+1

您也可以考虑一个''seaborn' swarmplot':https://seaborn.pydata.org/generated/ seaborn.swarmplot.html#seaborn.swarmplot – tom

回答

1

对我来说,它看起来像一种指示错误条的方法,因此您可以尝试使用box plot来表示它。

关于彩色地图:只需添加cmap='inferno'在分散的呼叫,像这样:

ax.scatter(np.ones_like(histo)*x[10],y_better,c=histo,norm=matplotlib.colors.LogNorm(),s=100,cmap='inferno') 
+0

谢谢。 按照你对盒子情节的建议,我发现了小提琴,看起来很神奇。现在我仍然有一个问题,并已更新我的问题! – Sebastiano1991