微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在脊图中绘制一个点

如何解决在脊图中绘制一个点

具有以下数据框:

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

sample1 = np.random.normal(5,10,size = (200,5))
sample2 = np.random.normal(40,5,5))
sample3 = np.random.normal(10,5))

b = []

for i in range(0,3):
        a = "Sample" + "{}".format(i)
        lst = np.repeat(a,200)
        b.append(lst)
b = np.asarray(b).reshape(600,1)

data_arr = np.vstack((sample1,sample2,sample3))
df1 = pd.DataFrame(data = data_arr,columns = ["foo","bar","qux","corge","grault"])

df1.insert(0,column="sampleNo",value = b)

我能够生成以下脊线图:

fig,axes = joypy.joyplot(df1,column = ['foo'],by = 'sampleNo',alpha=0.6,linewidth=.5,linecolor='w',fade=True)

enter image description here

现在,假设我有以下向量:

 vectors = np.asarray([10,40,50])

我如何将这些点中的每一个绘制到密度图中?例如,在样本 1 的分布图上,我希望在 10 上有一个点(或线);样品 2 上 40 等.

我试过使用 axvline,我有点希望它可以工作,但没有运气:

for ax in axes:
    ax.axvline(vectors(ax))

我不确定我想要的东西是否可能...

解决方法

你几乎找到了正确的方法。

axes 包含 4 个轴对象,按顺序是:从上到下的三个堆叠图和所有其他 3 个所在的大图。所以,

for ax,v in zip(axes,vectors):
    ax.axvline(v)

zip() 只会压缩到较短的可迭代对象,即 vectors。因此,它会将 vectors 中的每个点与堆叠图中的每个轴进行匹配。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。