Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.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绘制热图时,如何将刻度定位到网格中心?_Python_Matplotlib_Seaborn_Heatmap_Colorbar - Fatal编程技术网

Python 使用seaborn绘制热图时,如何将刻度定位到网格中心?

Python 使用seaborn绘制热图时,如何将刻度定位到网格中心?,python,matplotlib,seaborn,heatmap,colorbar,Python,Matplotlib,Seaborn,Heatmap,Colorbar,我用seaborn软件包绘制了热图,我希望勾号位于网格之间的中心。我应该怎么做来改变滴答声 另外,我认为第一个图和第二个图之间的空间太窄,而第二个图和色条之间的空间太宽。如何调整每个轴之间的间距 下面是我的绘图代码,我附加了生成的绘图 import seaborn as sns import matplotlib.pyplot as plt import pandas as pd sns.set(font_scale=1.2) fig, axs=plt.subplots(ncols=3, fi

我用seaborn软件包绘制了热图,我希望勾号位于网格之间的中心。我应该怎么做来改变滴答声

另外,我认为第一个图和第二个图之间的空间太窄,而第二个图和色条之间的空间太宽。如何调整每个轴之间的间距

下面是我的绘图代码,我附加了生成的绘图

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

sns.set(font_scale=1.2)
fig, axs=plt.subplots(ncols=3, figsize=(24, 10), gridspec_kw=dict(width_ratios=[4,4,0.3]))
df1=pd.DataFrame(main_pmatrix)
df2=pd.DataFrame(after_pmatrix)
g1=sns.heatmap(df1, cmap='hot', ax=axs[0], cbar=False, vmin=0.9, vmax=1.8)
g2=sns.heatmap(df2, cmap='hot', ax=axs[1], cbar=False, vmin=0.9, vmax=1.8)
g1.set_xticks(range(21))
g1.set_xticklabels(['1.0','1.1','1.2','1.3','1.4','1.5','1.6','1.7','1.8','1.9','2.0','2.1','2.2','2.3','2.4','2.5','2.6','2.7','2.8','2.9','3.0'])
g2.set_xticks(range(21))
g2.set_xticklabels(['1.0','1.1','1.2','1.3','1.4','1.5','1.6','1.7','1.8','1.9','2.0','2.1','2.2','2.3','2.4','2.5','2.6','2.7','2.8','2.9','3.0'])
g1.set_yticks(range(11))
g1.set_yticklabels(['0.5','0.6','0.7','0.8','0.9','1.0','1.1','1.2','1.3','1.4','1.5'])
g1.set_xlabel("Fractal dimension, $d_f$", fontsize=25, labelpad=10)
g1.set_ylabel("$b-$value", fontsize=25, labelpad=10)
g2.set_yticks(range(11))
g2.set_yticklabels(['0.5','0.6','0.7','0.8','0.9','1.0','1.1','1.2','1.3','1.4','1.5'])
g2.set_xlabel("Fractal dimension, $d_f$", fontsize=25, labelpad=10)
g2.set_ylabel("$b-$value", fontsize=25, labelpad=10)
plt.colorbar(axs[1].collections[0], cax=axs[2])
plt.xlabel("$p$", fontsize=20, labelpad=10)
plt.show()

您可以使用的
xticklabels=
yticklabels=
参数将所需的记号标签设置在正确的位置。这样,就不需要设置图标等。子地块之间的垂直空间可通过调整

还请注意,不需要将矩阵转换为熊猫数据帧,因为seaborn只需将数据帧转换回2D numpy数组

导入seaborn作为sns
将matplotlib.pyplot作为plt导入
将numpy作为np导入
主矩阵=np.随机.均匀(1.2,1.8,(11,21))
在_p矩阵=np.随机.均匀(0.9,1.5,(11,21))
sns.set(字体刻度=1.2)
图(ax1,ax2,ax3)=plt.子批次(ncols=3,figsize=(24,10),gridspec_-kw=dict(宽度比=[4,4,0.3],wspace=0.2))
xticklabels=[f'{i:.1f}'代表np.arange(1,3.001,0.1)中的i]
yticklabels=[f'{i:.1f}'表示np.arange中的i(0.5,1.501,0.1)]
sns.热图(主矩阵,cmap='hot',ax=ax1,cbar=False,vmin=0.9,vmax=1.8,
xticklabels=xticklabels,yticklabels=yticklabels)
sns.热图(在矩阵之后,cmap='hot',ax=ax2,cbar=False,vmin=0.9,vmax=1.8,
xticklabels=xticklabels,yticklabels=yticklabels)
对于ax-in(ax1、ax2):
ax.set_xlabel(“分形维数,$d_f$”,fontsize=25,labelpad=10)
ax.set_ylabel($b-$value),fontsize=25,labelpad=10)
ax1.集合标题('Main p-matrix',fontsize=28)
ax2.set_title('在p矩阵之后',fontsize=28)
plt.colorbar(ax2.collections[0],cax=ax3)
ax3.setxlabel($p$),fontsize=20,labelpad=10)
plt.show()