matplotlib标签格式化字体已更改

时间:2018-09-08 07:45:01

标签: python python-3.x matplotlib text string-formatting

我使用np.linspace生成数据分析图,然后将其显示给会议,出版物等上的人。我通常会存储所有数据和脚本,以生成每个有趣/有用的图,以防万一我需要在创建图表后的某个时刻更新图表。这是我的盒式标准代码示例,可生成以下图表:

import scipy.interpolate as ip
import numpy as np

x = [-1.5, 2.23]
y = [0.1, -11]

x_new = np.linspace(start=x[0], stop=x[-1], num=10)
print(x_new)

y_new = np.linspace(start=y[0], stop=y[-1], num=10)
print(y_new)

f = ip.interp1d(x, y)
y_new2 = f(x_new)
print(y_new2)  # y_new2 values always the same as y_new

Old matplotlib

最近(在过去的几个月内,但是可能是一个很长的更新...),我更新了matplotlib,上面的脚本开始生成格式不同的图:

New matplotlib

修剪的Y轴并不重要,我可以忍受它并调整图/轴。我有点困惑的是更改后的字体。在# In[Imports]: import pandas, matplotlib, matplotlib.pyplot # In[Plot formatting]: ticksFontSize = 18 labelsFontSize = 30 legendFontSize = 16 cm=matplotlib.pyplot.cm.get_cmap('viridis') matplotlib.rc('xtick', labelsize=ticksFontSize) matplotlib.rc('ytick', labelsize=ticksFontSize) # In[Read the data]: # CDF of TLE update frequenies dfGood=pandas.read_csv('blue.csv',sep=',',header=None) epochsGood=dfGood[0].values cdfsGood=dfGood[1].values # In[Plot the data]: fig,ax=matplotlib.pyplot.subplots(1,1,sharex=True,figsize=(14,8)) ax.scatter(epochsGood,cdfsGood,c='indigo',marker='o',lw=0,s=30) ax.set_xlabel(r"$TLE\ update\ frequency\ (orbital\ periods)$", size=labelsFontSize) ax.set_ylabel(r"$Cumulative\ Distribution\ Function\ (-)$", fontsize=labelsFontSize) ax.grid(linewidth=1) ax.tick_params(axis='both',reset=False,which='both', length=5,width=1.5) ax.tick_params(axis='x', which='major', pad=15) ax.set_xlim(0,5) ax.set_ylim(0,1.1) matplotlib.pyplot.subplots_adjust(left=0.1,right=0.95, bottom=0.15,top=0.9) fig.show() 更新期间,matplotlib文件似乎已更改。我可以接受这一点,并在脚本中显式设置matplotlib属性,或者按this answer所示按标签设置标签文本属性。但是我不知道如何返回以前的格式,即要设置哪些文本属性。有什么想法吗?

一些有用的信息

  1. 当前Python版本= 3.5.4
  2. 我用来生成“旧图” = 3.5.something
  3. 的Python版本
  4. 当前matplotlibrc版本= 2.2.2
  5. 我用来生成“旧剧情”的
  6. matplotlibrc版本 =我希望我知道...

1 个答案:

答案 0 :(得分:1)

默认的数学字体在版本2.x from "Computer Modern" to "DejaVu Sans"中已更改。您可以按照文档中提到的脚本将其更改回以前的版本:

from matplotlib import pyplot as plt

plt.rcParams['mathtext.fontset'] = 'cm'
plt.rcParams['mathtext.rm'] = 'serif'

示例输出(没有数据,因为您的问题不包含MCVE): enter image description here