我有一个带色条的matplotlib阴谋,似乎无法弄清楚如何匹配阴谋和颜色条的字体。Matplotlib,usetex:色条的字体与阴谋的字体不匹配
我尝试使用usetex进行文本处理,但似乎只有情节的滴答声受到影响,而不是颜色条的滴答声。 另外,我已经搜索了相当多的解决方案,所以在下面的代码示例中,包含了一些不同的尝试,但结果仍然是粗体字体。最小失败代码示例:
import matplotlib as mpl
import matplotlib.pyplot as plt
import sys
import colorsys
import numpy as np
mpl.rc('text', usetex=True)
plt.rcParams["font.family"] = "Times New Roman"
plt.rcParams["font.weight"] = 100
plt.rcParams["axes.labelweight"] = 100
plt.rcParams["figure.titleweight"] = 100
def draw():
colors = [colorsys.hsv_to_rgb(0.33, step /15, 1) for step in [2, 5, 8, 11, 14]]
mymap = mpl.colors.LinearSegmentedColormap.from_list('value',colors, N=5)
Z = [[0,0],[0,0]]
levels = range(2,15+4,3)
CS3 = plt.contourf(Z, levels, cmap=mymap)
plt.clf()
plt.figure(figsize=(20, 15))
plt.gca().set_aspect('equal')
cbar = plt.colorbar(CS3, ax=plt.gca(), shrink=0.5, fraction=0.5, aspect=30, pad=0.05, orientation="horizontal")
cbar.set_ticks([1.5 + x for x in [2,5,8,11,14]])
# attempts to make the fonts look the same
cbar.ax.set_xticklabels([1,2,3,4,5], weight="light", fontsize=16)
cbar.set_label("value", weight="ultralight", fontsize=32)
plt.setp(cbar.ax.xaxis.get_ticklabels(), weight='ultralight', fontsize=16)
for l in cbar.ax.xaxis.get_ticklabels():
l.set_weight("light")
plt.show()
draw()
不幸的是,字体看起来并不一样。图片:
我敢肯定,这对我而言usetex的只是个愚蠢的误解。为什么usetex似乎不处理colormap的字体?
谢谢!
复制此代码时出现错误。也许必须使用OSX和python3来处理我。 – Skirrebattie
使用OS X + Python 3的例子很好用 – Bart
@Skirrebattie我实际上也使用OS X + python 3。你会得到什么错误? – Tonkel