matplotlib imshow 的粗偏移问题
thick offset problem with matplotlib imshow
我正在尝试使用 matplotlib imshow 绘制相关矩阵。
几乎成功了,但我的勾号偏移了,第一个不见了!?
这是我的代码:
fig1, ax = plt.subplots(1,1)
heatplot = ax.imshow(X.corr(), cmap='jet')
ax.set_xticklabels(X.columns)
ax.set_yticklabels(X.columns)
tick_spacing = 1
ax.xaxis.set_major_locator(ticker.MultipleLocator(tick_spacing))
ax.yaxis.set_major_locator(ticker.MultipleLocator(tick_spacing))
结果:Tmin
应该结束 Tmax
但现在在最后一行没有勾选
调用 ax.xaxis.set_major_locator(ticker.MultipleLocator(1))
没有指定起始刻度位置。显然,这里 matplotlib 还在 -1
位置设置了一个刻度。此外,在调用 set_xticklabels
.
之前应固定刻度位置
最简单的方法是调用 ax.set_xticks(range(len(X.columns)))
来指定所需的确切报价。
from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
fig1, ax = plt.subplots(1, 1)
X = pd.DataFrame(np.random.rand(4, 10), columns=[*'abcdefghij'])
heatplot = ax.imshow(X.corr(), cmap='seismic_r', vmin=-1, vmax=1)
ax.set_xticks(range(len(X.columns)))
ax.set_yticks(range(len(X.columns)))
ax.set_xticklabels(X.columns, rotation=90)
ax.set_yticklabels(X.columns)
plt.show()
seaborn 提供了一个更简单的界面,它会自动执行许多操作:
from matplotlib import pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
X = pd.DataFrame(np.random.rand(4, 12), columns=['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'])
sns.heatmap(data=X.corr(), cmap='RdYlGn', vmin=-1, vmax=1, annot=True)
plt.xticks(rotation=30)
plt.yticks(rotation=0)
plt.tight_layout()
plt.show()
我正在尝试使用 matplotlib imshow 绘制相关矩阵。
几乎成功了,但我的勾号偏移了,第一个不见了!?
这是我的代码:
fig1, ax = plt.subplots(1,1)
heatplot = ax.imshow(X.corr(), cmap='jet')
ax.set_xticklabels(X.columns)
ax.set_yticklabels(X.columns)
tick_spacing = 1
ax.xaxis.set_major_locator(ticker.MultipleLocator(tick_spacing))
ax.yaxis.set_major_locator(ticker.MultipleLocator(tick_spacing))
结果:Tmin
应该结束 Tmax
但现在在最后一行没有勾选
调用 ax.xaxis.set_major_locator(ticker.MultipleLocator(1))
没有指定起始刻度位置。显然,这里 matplotlib 还在 -1
位置设置了一个刻度。此外,在调用 set_xticklabels
.
最简单的方法是调用 ax.set_xticks(range(len(X.columns)))
来指定所需的确切报价。
from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
fig1, ax = plt.subplots(1, 1)
X = pd.DataFrame(np.random.rand(4, 10), columns=[*'abcdefghij'])
heatplot = ax.imshow(X.corr(), cmap='seismic_r', vmin=-1, vmax=1)
ax.set_xticks(range(len(X.columns)))
ax.set_yticks(range(len(X.columns)))
ax.set_xticklabels(X.columns, rotation=90)
ax.set_yticklabels(X.columns)
plt.show()
seaborn 提供了一个更简单的界面,它会自动执行许多操作:
from matplotlib import pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
X = pd.DataFrame(np.random.rand(4, 12), columns=['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'])
sns.heatmap(data=X.corr(), cmap='RdYlGn', vmin=-1, vmax=1, annot=True)
plt.xticks(rotation=30)
plt.yticks(rotation=0)
plt.tight_layout()
plt.show()