问题1: 在绘制边距时,如何删除绘图中的多余空间?在第一篇文章中回答如下。
问题2:
如何在边缘直方图上获得更好的控制,例如:绘制直方图并确定边缘的kde参数?我在第二篇文章中回答了JointGrid
。
#!/usr/bin/env python3
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
sns.set_palette("viridis")
sns.set(style="white", color_codes=True)
x = np.random.normal(0, 1, 1000)
y = np.random.normal(5, 1, 1000)
df = pd.DataFrame({"x":x, "y":y})
g = sns.jointplot(df["x"],df["y"], bw=0.15, shade=True, xlim=(-3,3), ylim=(2,8),cmap="coolwarm", kind="kde", stat_func=None)
# plt.tight_layout() # This will override seaborn parameters. Remember to exclude.
plt.show()
答案 0 :(得分:2)
jointplot
有一个space
参数,用于确定主图和边距图之间的空间。
运行此代码:
g = sns.jointplot(df["x"],df["y"], bw=0.15, shade=True, xlim=(-3,3),
ylim=(2,8),cmap="coolwarm", kind="kde",
stat_func=None, space = 0)
plt.show()
为我创造了这个情节:
请注意,使用plt.tight_layout()
投放会否决space
的{{1}}参数。
编辑:
要进一步指定边际图的参数,可以使用jointplot
。您必须传递一个字典,指定您使用的边缘图类型的参数。
在您的示例中,您使用marginal_kws
图作为边缘图。所以我将继续以此为例:
这里我将展示如何更改用于制作边缘图的内核。
kde
生成此图表:
您可以将kde绘图接受的任何参数作为字典中的键传递,并将该参数的所需值作为该键的值传递。
答案 1 :(得分:0)
好的,所以我要继续自己发一个额外的答案。我并不完全明白额外的marginal_kws
可以控制哪些参数。相反,使用JointGrid
逐层构建绘图(尤其是来自ggplot)可能更直观:
g = sns.JointGrid(x="x", y="y", data=df) # Initiate multi-plot
g.plot_joint(sns.kdeplot) # Plot the center x/y plot as sns.kdeplot
g.plot_marginals(sns.distplot, kde=True) # Plot the edges as sns.distplot (histogram), where kde can be set to True