Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Seaborn/Matplotlib:修改二元柱状图的轴限制,而不扭曲面元大小_Python_Matplotlib_Seaborn_Histogram - Fatal编程技术网

Python Seaborn/Matplotlib:修改二元柱状图的轴限制,而不扭曲面元大小

Python Seaborn/Matplotlib:修改二元柱状图的轴限制,而不扭曲面元大小,python,matplotlib,seaborn,histogram,Python,Matplotlib,Seaborn,Histogram,我试图绘制两个具有相同轴限制的二元直方图。当我在不改变任何一个轴的情况下绘制这两个轴时,我得到了以下结果(省略了一些样板参数数据定义和x/y勾号格式): 我想调整紫色直方图的大小,使其具有与绿色直方图相同的轴限制。我尝试过像这样手动设置限制(ax_3是紫色直方图,ax_2是绿色直方图) 这让我 但请注意紫色柱状图中的箱子现在是如何扭曲的。有没有一种方法可以在不扭曲箱子的情况下修改柱状图的轴限制?根据作者在评论中的建议,我尝试了以下方法,得到了我想要的结果 def create_hist_pl

我试图绘制两个具有相同轴限制的二元直方图。当我在不改变任何一个轴的情况下绘制这两个轴时,我得到了以下结果(省略了一些样板参数数据定义和x/y勾号格式):

我想调整紫色直方图的大小,使其具有与绿色直方图相同的轴限制。我尝试过像这样手动设置限制(ax_3是紫色直方图,ax_2是绿色直方图)

这让我

但请注意紫色柱状图中的箱子现在是如何扭曲的。有没有一种方法可以在不扭曲箱子的情况下修改柱状图的轴限制?

根据作者在评论中的建议,我尝试了以下方法,得到了我想要的结果

def create_hist_plot(params, ax, cbar_ax=None, color=GK_GREEN, bins=80):
    result = sns.histplot(
        **params,
        ax=ax,
        kde=True,
        bins=bins,
        color=color,
    )
    return result

ax_2 = create_hist_plot(params_1, ax_2, color=GREEN, bins=40)
bins = [
    np.linspace(ax_2.get_xlim()[0], ax_2.get_xlim()[1], 40),
    np.linspace(ax_2.get_ylim()[0], ax_2.get_ylim()[1], 40)
]
ax_3 = create_hist_plot(params_2, ax_3, color=PURPLE, bins=bins)
结果

根据评论中的建议,我尝试了以下方法,得到了我想要的结果

def create_hist_plot(params, ax, cbar_ax=None, color=GK_GREEN, bins=80):
    result = sns.histplot(
        **params,
        ax=ax,
        kde=True,
        bins=bins,
        color=color,
    )
    return result

ax_2 = create_hist_plot(params_1, ax_2, color=GREEN, bins=40)
bins = [
    np.linspace(ax_2.get_xlim()[0], ax_2.get_xlim()[1], 40),
    np.linspace(ax_2.get_ylim()[0], ax_2.get_ylim()[1], 40)
]
ax_3 = create_hist_plot(params_2, ax_3, color=PURPLE, bins=bins)
结果

您可以添加代码来创建双变量直方图吗?可能您可以添加一个参数
bins=
,以便在两个直方图中使用相同的bins。我为两个图指定了一个40的箱子大小。您不应该为
箱子=
添加一个简单的数字,而是一对向量,一个用于
x
,一个用于
y
。由于不清楚数据和轴是如何构成的,因此很难给出一个示例。向量可以类似于
np.linspace(min\u val,max\u val,40)
对两个直方图使用相同的min和max。这是一个很好的建议!我把你说的话搞砸了,结果得到了我想要的结果。我将更新我的问题,以包括为我工作的代码。如果你想把你的评论作为一个答案,我会标记为接受。谢谢本,请加上这个作为答案并接受它。不要在问题中包含答案。你能添加代码来创建双变量直方图吗?可能您可以添加一个参数
bins=
,以便在两个直方图中使用相同的bins。我为两个图指定了一个40的箱子大小。您不应该为
箱子=
添加一个简单的数字,而是一对向量,一个用于
x
,一个用于
y
。由于不清楚数据和轴是如何构成的,因此很难给出一个示例。向量可以类似于
np.linspace(min\u val,max\u val,40)
对两个直方图使用相同的min和max。这是一个很好的建议!我把你说的话搞砸了,结果得到了我想要的结果。我将更新我的问题,以包括为我工作的代码。如果你想把你的评论作为一个答案,我会标记为接受。谢谢本,请加上这个作为答案并接受它。不要在问题中包含答案。
def create_hist_plot(params, ax, cbar_ax=None, color=GK_GREEN, bins=80):
    result = sns.histplot(
        **params,
        ax=ax,
        kde=True,
        bins=bins,
        color=color,
    )
    return result

ax_2 = create_hist_plot(params_1, ax_2, color=GREEN, bins=40)
bins = [
    np.linspace(ax_2.get_xlim()[0], ax_2.get_xlim()[1], 40),
    np.linspace(ax_2.get_ylim()[0], ax_2.get_ylim()[1], 40)
]
ax_3 = create_hist_plot(params_2, ax_3, color=PURPLE, bins=bins)