如何改变seaborn jointplot横向kde图的颜色

时间:2016-02-18 13:49:25

标签: matplotlib plot seaborn kde density-plot

我想创建一个使用标准色图sns.jointplot的{​​{1}}。对于横向kde估计的密度,该标准颜色循环的输出太轻。我更喜欢使用"Greens"色彩图时颜色较深的颜色。

是否有一种简单的方法可以让它们变暗?

"BuGn_r"

见下面的输出:

enter image description here

2 个答案:

答案 0 :(得分:1)

使用kdeplot创建线条和阴影区域后,可以更改颜色。可以从g3g3.ax_marg_xg3.ax_marg_y访问边缘轴。

您可以使用以下颜色更改线条的颜色:

g3.ax_marg_x.lines[0].set_color()

阴影区域的颜色为:

g3.ax_marg_x.collections[0].set_facecolor()

当然,您可以将它们设置为任何有效的matplotlib颜色。或者,为了获得您在第一个图中使用的确切颜色,您还可以在get_color边距上使用get_facecolorg2

您可以在下面的脚本中看到所有操作:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pn
import seaborn as sns

iris = sns.load_dataset("iris")
with sns.axes_style("white"):
    sns.set_palette("BuGn_r")
    g2 = sns.jointplot("sepal_width", "petal_length", data=iris,
                kind="kde", space=0)

    # Find out the face and line colours that BuGn_r uses
    facecolor = g2.ax_marg_x.collections[0].get_facecolor()
    linecolor = g2.ax_marg_x.lines[0].get_color()

    print facecolor 
    # [[ 0.0177624   0.4426759   0.18523645  0.25      ]]

    print linecolor
    # (0.017762399946942051, 0.44267590116052069, 0.18523645330877866)    

with sns.axes_style("white"):
    sns.set_palette("Greens")
    g3 = sns.jointplot("sepal_width", "petal_length", data=iris,
                    kind="kde", space=0)

    # Change the facecolor of the shaded region under the line
    g3.ax_marg_x.collections[0].set_facecolor(facecolor)
    g3.ax_marg_y.collections[0].set_facecolor(facecolor)

    # And change the line colour.
    g3.ax_marg_x.lines[0].set_color(linecolor)
    g3.ax_marg_y.lines[0].set_color(linecolor)

plt.show()

" BuGn_r"

enter image description here

"绿色"修改后的颜色

enter image description here

答案 1 :(得分:0)

使用color=的{​​{1}}参数。