python的seaborn jointplot,每个柱状图的颜色不同
python's seaborn jointplot, different colors for each histograms
我想更改用 seaborn 创建的联合图中每个直方图的颜色。
我设法使用 marginal_kws 更改了两个图的颜色,但是如何为每个直方图设置颜色? (例如红色和绿色直方图)
我的联合图的一个最小示例:
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
x, y = np.random.multivariate_normal([2, 3], [[0.3, 0], [0, 0.5]], 1000).T
with sns.axes_style("white"):
g = sns.jointplot(x=x, y=y, kind="hex", stat_func=None, marginal_kws={'color': 'green'})
plt.show()
我认为你需要在这里使用 jointgrid rather than jointplot。这是尝试接近您当前的情节的尝试;您可能需要更多地使用颜色和 cmap 以使 hexbin 图看起来更有吸引力。
x, y = np.random.multivariate_normal([2, 3], [[0.3, 0], [0, 0.5]], 1000).T
def hexbin(x, y):
plt.hexbin(x, y, gridsize=20, cmap='Blues')
with sb.axes_style("white"):
g = sb.JointGrid(x=x, y=y, ylim=(0,6))
g = g.plot_joint(hexbin)
g.ax_marg_x.hist(x, color="b", alpha=.6)
g.ax_marg_y.hist(y, color="r", alpha=.6, orientation="horizontal")
iayork 关于直接使用轴对象的回答很好,尽管另一种选择是在绘图后更改条形的颜色:
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="white", color_codes=True)
x, y = np.random.multivariate_normal([2, 3], [[0.3, 0], [0, 0.5]], 1000).T
g = sns.jointplot(x=x, y=y, kind="hex", stat_func=None, marginal_kws={'color': 'green'})
plt.setp(g.ax_marg_y.patches, color="r")
我想更改用 seaborn 创建的联合图中每个直方图的颜色。
我设法使用 marginal_kws 更改了两个图的颜色,但是如何为每个直方图设置颜色? (例如红色和绿色直方图)
我的联合图的一个最小示例:
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
x, y = np.random.multivariate_normal([2, 3], [[0.3, 0], [0, 0.5]], 1000).T
with sns.axes_style("white"):
g = sns.jointplot(x=x, y=y, kind="hex", stat_func=None, marginal_kws={'color': 'green'})
plt.show()
我认为你需要在这里使用 jointgrid rather than jointplot。这是尝试接近您当前的情节的尝试;您可能需要更多地使用颜色和 cmap 以使 hexbin 图看起来更有吸引力。
x, y = np.random.multivariate_normal([2, 3], [[0.3, 0], [0, 0.5]], 1000).T
def hexbin(x, y):
plt.hexbin(x, y, gridsize=20, cmap='Blues')
with sb.axes_style("white"):
g = sb.JointGrid(x=x, y=y, ylim=(0,6))
g = g.plot_joint(hexbin)
g.ax_marg_x.hist(x, color="b", alpha=.6)
g.ax_marg_y.hist(y, color="r", alpha=.6, orientation="horizontal")
iayork 关于直接使用轴对象的回答很好,尽管另一种选择是在绘图后更改条形的颜色:
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="white", color_codes=True)
x, y = np.random.multivariate_normal([2, 3], [[0.3, 0], [0, 0.5]], 1000).T
g = sns.jointplot(x=x, y=y, kind="hex", stat_func=None, marginal_kws={'color': 'green'})
plt.setp(g.ax_marg_y.patches, color="r")