如何沿着轮廓外部保持轮廓标签文字?注意 - 我不希望它与轮廓内联。以下MCVE。
from matplotlib import pyplot as plt
import numpy as np
Data=np.zeros((100,100))
Data[10:30,10:30] = 1
Data[60:80,60:80] = 1
f,ax1 = plt.subplots(1,1)
CS = ax1.contour(np.arange(0,100),np.arange(0,100),Data,[0,1])
ax1.clabel(CS, inline=False, fmt='%1.1f', fontsize=10)
plt.show()
检查了API后,我看不到任何内容(除了内联,手动点击或指定位置)。因此,在下图中,我希望在countour外面的标签略低。
答案 0 :(得分:1)
您可以设置标签之后的垂直对齐创建它们,使其与顶部对齐到初始位置。
$Date$
此解决方案是半自动的。由于您不知道标签将放置在哪一侧,因此您不知道是否在此处使用clabels = ax.clabel( ... )
for label in clabels:
label.set_va("top")
或"top"
。此外,对于曲线,这根本没有帮助,您需要手动指定位置("bottom"
)
完整示例:
ax1.clabel(CS, ..., manual=list_of_locations)
<小时/> 有点破解,也可能与旋转标签一起使用(虽然我还没有对其进行过测试)可能是在标签前面引入了一个换行符。这也可以有效地将标签转移到底部。
from matplotlib import pyplot as plt
import numpy as np
Data=np.zeros((100,100))
Data[10:30,10:30] = 1
Data[60:80,60:80] = 1
f,ax1 = plt.subplots(1,1)
CS = ax1.contour(np.arange(0,100),np.arange(0,100),Data,[0,1])
cl = ax1.clabel(CS, inline=False, fmt='%1.1f', fontsize=10)
for l in cl:
l.set_va("top")
plt.show()