我编写了一个python函数,用于绘制一系列填充轮廓,使用kdeplot
函数seaborn
从一个numpy数组列表中获取数据集的某些列。代码如下:
import matplotlib.pyplot as plt
import seaborn as sns
def kdeplots_figure(dataset):
cols = int((len(dataset)-2)/2)
figure, axes = plt.subplots(1, cols, figsize=(15,6), sharey=True)
f = 2
for i in range (len(axes)):
sns.set_style("white")
axes[i].set_title(" Cluster {0}".format(i), fontsize = 16)
axes[i].set_ylabel('Y Axis', fontsize = 14)
axes[i].set_xlabel('X Axis', fontsize = 14)
axes[i].set_xlim([95,130])
axes[i].tick_params(labelsize=13)
sns.kdeplot(dataset[f],dataset[f+1],cmap="Blues_d",shade_lowest=True,ax=axes[i])
sns.kdeplot(dataset[f],dataset[f+1],cmap="Blues",shade_lowest=True,shade=True,ax=axes[i])
f = f+2
plt.show()
然而,一些轮廓在他们在x-y平面中采样的空间不同,当我绘制它们时,在一些图形的背景中有一个白色部分,我不知道如何填充。见下文:
两个图表看起来都应该位于右侧。我尝试使用ax.set_facecolor
设置背景颜色,并借助此线程获取cmap调色板的最后一种颜色:Getting individual colors from a color map in matplotlib。但是,我得到的背景颜色略有不同。我也尝试使用sns.kdeplot
的剪辑参数而没有运气。
我该如何解决这个问题?如果您需要其他信息,请与我们联系。
答案 0 :(得分:0)
所以我做了一个黑客并摆脱了网格并使用gimp来获得最小的脸颜色。 (我使用剪切工具获取图像的图片,在一个名为gimp的免费程序中打开它,并获得十六进制代码。)然后我改变了轴的面部颜色。以下代码将为您提供所需的内容。
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
def kdeplots_figure(dataset):
cols = int((len(dataset)-2)/2)
figure, axes = plt.subplots(1, cols, figsize=(15,6), sharey=True)
f = 2
for i in range (len(axes)):
sns.set_style("white")
axes[i].set_title(" Cluster {0}".format(i), fontsize = 16)
axes[i].set_ylabel('Y Axis', fontsize = 14)
axes[i].set_xlabel('X Axis', fontsize = 14)
axes[i].tick_params(labelsize=13)
axes[i].grid(False)
axes[i].set_facecolor('#eef5fc')
sns.kdeplot(dataset[f],dataset[f+1],cmap="Blues_d",ax=axes[i])
sns.kdeplot(dataset[f],dataset[f+1],cmap="Blues", shade=True,
extend='both', ax=axes[i])
f = f+2
plt.show()
a = np.random.rand(6,6)
kdeplots_figure(a)