如何将轮廓标签文本保留在轮廓外部?注意 - 我不希望它与轮廓对齐。下面是 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()
您可以在创建标签后设置标签的垂直对齐方式,使其顶部与初始位置对齐。
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()
一个可能也适用于旋转标签的黑客(虽然我还没有测试过)可能是在标签前面引入换行符。这实际上也会将标签移到底部。
from matplotlib import pyplot as plt
import matplotlib.ticker
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])
fmt = matplotlib.ticker.StrMethodFormatter("\n{x:1.1f}")
cl = ax1.clabel(CS, inline=False, fmt=fmt, fontsize=10)
plt.show()