在 ridgeplots 中绘制一个点
plot a point within ridgeplots
具有以下数据框:
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, size = (200, 5))
sample3 = np.random.normal(10, 5, size = (200, 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)
现在,假设我有以下向量:
vectors = np.asarray([10, 40, 50])
如何将这些点中的每一个绘制到密度图中?例如,在样本 1 的分布图上,我想在 10 上有一个点(或线); 40 上的样本 2,等等
我试过使用 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
中的每个点与堆叠图中的每个轴相匹配。
具有以下数据框:
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, size = (200, 5))
sample3 = np.random.normal(10, 5, size = (200, 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)
现在,假设我有以下向量:
vectors = np.asarray([10, 40, 50])
如何将这些点中的每一个绘制到密度图中?例如,在样本 1 的分布图上,我想在 10 上有一个点(或线); 40 上的样本 2,等等
我试过使用 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
中的每个点与堆叠图中的每个轴相匹配。