我有以下情节:
我想通过将刻度旋转~40度来使x轴刻度更具可读性。所以来自:
plt.xticks(list(range(0, width)), list(df_100.columns), rotation='90', fontsize=16)
要:
plt.xticks(list(range(0, width)), list(df_100.columns), rotation='40', fontsize=16)
但是,当我这样做时,我会遇到一些疯狂的间距问题:
(忽略颜色的变化......)
造成这个问题的原因是什么?我该如何解决?这是一个最低限度的工作示例:
import matplotlib.pyplot as plt
import numpy as np
# Z is your data set
N = 100
height = df_100.shape[0]
width = df_100.shape[1]
# Z = np.random.random((100, 29))
# G is a NxNx3 matrix
G = np.zeros((height,width,3))
# Where we set the RGB for each pixel
G[Z>0.5] = [1, 1, 1]
G[Z<0.5] = [0.25, 0.25, 0.25]
fig, ax = plt.subplots(figsize=(20, 10))
ax.imshow(G, interpolation='none')
ax.set_aspect('auto')
ax.grid(None)
ax.xaxis.tick_top()
plt.xticks(list(range(0, width)), list(df_100.columns), rotation='45', fontsize=16)
plt.yticks([0, df_100.shape[0] - 1], [1, df_100.shape[0]], fontsize=20)
plt.tight_layout()
plt.show()
答案 0 :(得分:2)
如果xticklabels长度相同,则不会遇到此类问题。但鉴于标签长度不同,您可能会遇到这种问题。因为默认旋转来自xlabel字符串的中心。因此,您可以尝试正确设置旋转锚点 [&#39;对&#39;,&#39; center&#39;,&#39; left&#39;]。
ha = 'left' # or 'right'. Experiment with it.
ax.set_xticks(x) # set tick location
ax.set_xticklabels(xlabels, rotation=40, ha=ha) # rotate the labels with proper anchoring.