繁体   English   中英

在python中使用'violin-plot'样式图绘制一组函数

[英]Plotting a set of functions using a 'violin-plot' style plot in python

假设我要可视化函数f[n] = e^{-(xn)^2}/n对于n=1...10 请注意,这些不是概率分布。

(实际上不是我想做的情节,但足够接近)。

我想用小提琴图( https://matplotlib.org/gallery/statistics/violinplot.html )进行演示,其中每个n都有一条垂直线,并在函数的两侧绘制函数垂线。

但是小提琴图似乎仅用于显示数据样本的位置。 因此,所有用于它的工具都需要我为其提供数据集。 我要绘制的数据不是这种类型的-这是一个实际的已知函数。

[如果您需要更多背景信息,则与我的早期问题有关-https: //stats.stackexchange.com/questions/403359/visualizing-2d-data-when-one-dimension-is-discrete-and-the-其他连续]

这个问题有点笼统,所以也许这实际上并不是您想要的。 但是据我了解,您只想在不同位置n位置f(x,n)上绘制函数,并在垂直轴上具有x

import numpy as np
import matplotlib.pyplot as plt

f = lambda x, n: np.exp(-(x-n)**2)/n

x = np.linspace(-2,12,101)
ns = np.arange(1,11)

for n in ns:
    plt.fill_betweenx(x, -f(x,n)+n, f(x,n)+n, color="C0", alpha=0.5)

plt.xlabel("n")
plt.ylabel("x")
plt.xticks(ns)        
plt.show() 

在此处输入图片说明

IIUC,您想要这样的事情:

df = pd.DataFrame({n: [np.exp(-(x-n)**2)/n  for x in np.arange(-1,1,0.1)] for n in range(1,11)})

fig, ax = plt.subplots(1,1, figsize=(10,10))
ax.violinplot(df.T)
plt.show()

输出:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM