3.2.0 的 API 变更#
行为变化#
减少 rcParams["axes.formatter.limits"]
(default: [-5, 6]
) 的默认值#
将 rcParams["axes.formatter.limits"]
(default: [-5, 6]
) 的默认值从 -7, 7 改为 -5, 6 以提高可读性。
(Source code
, 2x.png
, png
)

matplotlib.colorbar.Colorbar
对所有可映射对象使用未归一化的轴#
在3.0之前,matplotlib.colorbar.Colorbar
(colorbar
) 将所有轴的限制标准化在0到1之间,并使用自定义的刻度器来处理颜色条刻度的标注。3.0之后,从*非*等高线构建的颜色条的轴限制在mappable的norm的``vmin``和``vmax``之间,并且刻度器成为普通轴刻度器的子类。
这个版本的 Matplotlib 扩展到了由等高线创建的可映射对象,并允许坐标轴在等高线的最低边界和最高边界之间运行。
在0和1之间进行归一化的代码将需要修改。
MovieWriterRegistry
#
MovieWriterRegistry
现在在返回写入器类之前总是检查它们的可用性。例如,如果希望在不执行后续写入器的可用性检查的情况下获取第一个可用的写入器,现在可以通过迭代注册表来实现,这将产生可用类的名称。
自动扩展#
Matplotlib 过去在每次绘图(plot()
、bar()
等)调用后都会重新计算自动缩放的限制。现在它只在实际渲染画布时,或当用户查询 Axes 限制时才这样做。这对于包含大量艺术家的图表来说是一个重大的性能改进。
特别是,这意味着通过 Axes.add_line
, Axes.add_patch
等手动添加的艺术家将被自动缩放功能考虑在内,即使没有显式调用 Axes.autoscale_view
。
在某些情况下,这可能会导致报告不同的限制。如果这是一个问题,请考虑使用 fig.canvas.draw()
触发绘制。
基于 Collection
类的艺术家也改变了自动缩放的方式。以前,计算自动限制的方法 Collection.get_datalim
试图考虑集合中对象的大小,并使限制足够大以不裁剪任何对象,即对于 Axes.scatter
,它会使限制足够大以不裁剪散点中的任何标记。当对象大小在物理空间或图形相对空间中指定时,这是有问题的,因为从物理单位到数据限制的转换需要知道数据限制,并且在应用新限制时变得无效。这是一个理论上可解的逆问题(如果对象在物理上小于轴),但额外的复杂性被认为不值得,特别是对于最常见的用例,即散点中的标记通常足够小,可以被默认的数据限制边距所容纳。
虽然新的行为在算法上更简单,但它取决于 Collection
对象的属性:
offsets = None
,transform
是Axes.transData
的子类:使用路径来自动设置限制(例如,在Axes.streamplot
中的LineCollection
)。offsets != None
,并且offset_transform
是Axes.transData
的子类:transform
是Axes.transData
的子类:使用path + offset
作为限制(即,用于Axes.bar
)。transform
不是Axes.transData
的子类:只需使用偏移量来设置限制(例如用于散点图)
否则返回一个空的
Bbox
。
虽然这看起来很复杂,但逻辑只是使用数据空间中对象的信息来设定限制,而不是使用物理单位的信息。
对数刻度条形图() / 直方图() 自动限制#
当坐标轴已经使用对数刻度时,bar
和 hist
中的自动限制计算已更改,以匹配在调用 bar
和 hist
后将坐标轴切换为对数刻度时的计算,以及在调用 bar(..., log=True)
/ hist(..., log=True)
时的计算:如果至少有两个不同的条形高度,则将普通坐标轴的边距添加到它们(在对数刻度中);如果只有一个条形高度,则将其周围的坐标轴限制扩展一个数量级,然后应用坐标轴边距。
跨越多个行/列的轴标签#
Axes.label_outer
现在正确地保持了跨越多个行的 Axes 的 x 标签和刻度标签可见,只要它们覆盖了 Axes 网格的最后一行。(这与保持跨越多个列的 Axes 的 y 标签和刻度标签可见是一致的,只要它们覆盖了 Axes 网格的第一列。)
Axes.is_last_row
和 Axes.is_last_col
方法现在对于跨越多个行的 Axes 正确返回 True,只要它们分别覆盖最后一行或最后一列。同样,这与覆盖第一行或第一列的 Axes 的行为一致。
Axes.rowNum
和 Axes.colNum
属性已被弃用,因为它们仅指 Axes 覆盖的第一个网格单元。相反,请使用新的 ax.get_subplotspec().rowspan
和 ax.get_subplotspec().colspan
属性,它们是表示子图覆盖的整个行和列范围的 range
对象。
(请注意,此处提到的所有方法和属性实际上仅存在于 Axes
的 Subplot
子类中,该子类用于网格定位的 Axes,而不用于直接在绝对坐标中定位的 Axes。)
.GridSpec
类获得了 nrows
和 ncols
属性,作为 GridSpec.get_geometry
返回参数的更明确的同义词。
定位器#
当生成的刻度数超过 Locator.MAXTICKS
时,Locator.raise_if_exceeds
的行为从引发 RuntimeError 变为发出 WARNING 级别的日志。
非奇异定位器#
Locator.nonsingular
(在 mpl 3.1 中引入), DateLocator.nonsingular
, 和 AutoDateLocator.nonsingular
现在返回一个范围 v0, v1
其中 v0 <= v1
。此行为与 LogLocator
和 LogitLocator
子类的 nonsingular
实现一致。
get_data_ratio
#
Axes.get_data_ratio
现在在计算y-to-x比例之前考虑了轴的比例(线性、对数、对数等)。这一变化使得固定比例可以应用于任何x和y比例的组合。
艺术家粘性边缘#
之前,艺术家的 sticky_edges
属性是一个值列表,如果轴限制与粘性边缘重合,则不会通过轴边距进行扩展(例如,这是防止图像周围添加边距的机制)。
sticky_edges
现在对边距应用有额外的效果:即使轴限制没有与粘性边缘重合,它也不能通过边距应用 跨越 粘性边缘——相反,边距只会扩展轴限制,直到它碰到粘性边缘。
此更改改进了显示 streamplot
的轴的边距:
如果流线图延伸到向量场的边缘,那么轴的限制将被设置为与向量场的限制完全匹配(而之前有时会因为小的浮点误差而略有偏差)。
如果流线图没有到达矢量场的边缘(例如,由于使用了
start_points
和maxlength
),那么边距扩展将不会再跨越矢量场的限制。
此更改也在内部使用,以确保极坐标图不会显示负的 r 值,除非用户确实传入了负值。
gid
在 svg 输出中#
之前,如果一个图形、轴、图例或其他艺术家设置了自定义的 gid
(例如通过 .set_gid()
),这在 svg 输出中不会被反映出来。相反,会显示一个默认的 gid,如 figure_1
。现在这个问题已经修复,例如 fig.set_gid("myfigure")
在 svg 文件中会正确显示为 <g id="myfigure">
。如果你依赖于 gid 具有默认格式,现在你需要确保不要设置艺术家的 gid
参数。
字体#
字体粗细猜测现在首先检查 FT_STYLE_BOLD_FLAG 的存在,然后再尝试匹配字体名称中的子字符串。特别是,这意味着 Times New Roman Bold 现在被正确检测为粗体,而不是正常粗细。
颜色类似的检查#
matplotlib.colors.is_color_like
过去对所有浮点数的字符串表示都返回 True。然而,只有值在 0-1 之间的才是有效颜色(表示灰度值)。is_color_like
现在对 0-1 范围外的浮点数字符串表示返回 False。
默认图像插值#
在 Matplotlib 中显示的图像之前使用的是最近邻插值,这会导致缩小和非整数放大时的混叠效应。
新的 rcParams["image.interpolation"]
(default: 'auto'
) 默认值是新的选项“antialiased”。imshow(A, interpolation='antialiased')
在重采样 A 中的数据以进行显示(或保存到文件)时,如果 上采样率小于三倍且不是整数,将应用一个 Hanning 滤波器;下采样的数据在重采样时总是被平滑处理。
要恢复旧的行为,请将 rcParams["image.interpolation"]
(default: 'auto'
) 设置为旧的默认值“nearest”(或指定 Axes.imshow
的 interpolation
关键字参数)
要始终获得抗锯齿行为,无论上/下采样率如何,请将 rcParams["image.interpolation"]
(default: 'auto'
) 设置为 "hanning"(或其他可用滤镜之一)。
请注意,选择“hanning”滤波器是因为它只有适度的性能损失。抗锯齿效果可以通过其他滤波器得到改善。
rcParams#
当使用 RendererSVG
并且 rcParams["svg.image_inline"] == True
时,外部写入的图像现在使用一个单一的计数器,即使 renderer.basename
属性被覆盖,而不是每个 basename 一个计数器。
此更改仅会影响你如果使用了 rcParams["svg.image_inline"] = True
(默认是 False)*并且* 手动修改了 renderer.basename
。
将 rcParams["axes.formatter.limits"]
(default: [-5, 6]
) 的默认值从 -7, 7 改为 -5, 6 以提高可读性。
add_subplot()
#
Figure.add_subplot()
和 pyplot.subplot()
不再接受 figure 关键字参数。它只有在传递的图像是 self
或当前图像时才能工作。
indicate_inset()
#
在 <= 3.1.0 版本中,indicate_inset
和 indicate_inset_zoom
被记录为返回一个由 ConnectionPatch
组成的 4-元组,而实际上它们返回的是一个长度为 4 的列表。
它们现在正确地返回一个四元组。indicate_inset
如果在没有提供可选的 inset_ax 的情况下,之前会引发错误;现在它可以成功完成,并返回 None 而不是 ConnectionPatch
的元组。
PGF 后端#
pgf 后端的 get_canvas_width_height 现在返回的是显示单位中的画布尺寸,而不是之前的英寸。鉴于代码库中其他部分对 get_canvas_width_height
的使用,新的行为是正确的。
pgf 后端现在如果 graphicx
的版本足够新以支持 interpolate
选项(这是自动检测的),则会使用 \includegraphics
来包含图像,而不是 \pgfimage
。
cbook
#
cbook.warn_deprecated
的 "obj_type" 参数的默认值已从 "attribute"(一个从未在内部使用的默认值)更改为空字符串。
测试#
测试套件默认不再开启 Python 故障处理器。设置标准的 PYTHONFAULTHANDLER
环境变量来实现这一点。
后端 supports_blit
#
后端不再需要显式定义标志 supports_blit
。这仅与后端开发者相关。后端过去需要定义标志 supports_blit
。现在不再需要这样做,因为blitting功能现在会自动检测。
异常更改#
对于输入类型不正确的情况,以下各种API现在会引发 TypeError
而不是 ValueError
:backend_bases.GraphicsContextBase.set_clip_path
、blocking_input.BlockingInput.__call__
、matplotlib.cm.register_cmap
、dviread.DviFont
、rcsetup.validate_hatch
、.rcsetup.validate_animation_writer_path
、spines.Spine
、matplotlib.transforms
模块和 matplotlib.tri
包中的许多类,以及接受 norm
参数的 Axes 方法。
如果向 LogScale
传递了额外的 kwargs,现在将引发 TypeError
而不是 ValueError
。
mplot3d 自动注册#
mpl_toolkits.mplot3d
现在默认总是被注册。不再需要导入 mplot3d 来创建 3D 轴,使用
ax = fig.add_subplot(111, projection="3d")
SymLogNorm
现在有一个 base 参数#
之前,SymLogNorm
没有 base 关键字参数,其基数被硬编码为 base=np.e
。这与 SymmetricalLogScale
的默认行为(默认为 base=10
)以及文档中使用“十进制”一词的做法不一致。
在准备将默认基数改为10的过程中,调用 SymLogNorm
时若不使用新的 base 关键字参数,将会发出一个弃用警告。
弃用#
matplotlib.use
#
matplotlib.use()
的 warn
参数已被弃用(捕获后端切换失败时发出的 ImportError
,并在需要时重新发出警告)。
plotfile#
.pyplot.plotfile
已被弃用,建议分别加载和绘制数据。使用 pandas 或 NumPy 加载数据,并使用 pandas 或 matplotlib 绘制结果数据。
axes 和 axis#
将 Axis.major.locator
、Axis.minor.locator
、Axis.major.formatter
或 Axis.minor.formatter
设置为不是 Locator
或 Formatter
的子类的对象已被弃用。请注意,这些属性通常应使用 Axis.set_major_locator
、Axis.set_minor_locator
等来设置,这些方法在传递错误类对象时已经会引发异常。
向 axis()
传递多个位置参数或不支持的关键字参数已被弃用(这些参数过去会被静默忽略)。
minor
参数将成为仅限关键字的参数#
使用 minor
参数作为 get_*ticks()
/ set_*ticks()
的位置参数已被弃用。它将在未来的版本中变为仅关键字参数。
axes_grid1
#
mpl_toolkits.axes_grid1.colorbar
模块及其颜色条实现已被弃用,取而代之的是 matplotlib.colorbar
,因为前者基本上已被放弃,而后者是一个功能更丰富的替代品,具有几乎兼容的API(例如,支持以下附加关键字:panchor
、extendfrac
、extendrect
)。
主要区别在于:
设置颜色条上的刻度是通过调用
colorbar.set_ticks
而不是colorbar.cbar_axis.set_xticks
或colorbar.cbar_axis.set_yticks
来完成的;colorbar()
的locator
参数已被弃用,取而代之的是其同义词 ``ticks``(该参数之前已经存在,并与matplotlib.colorbar
保持一致)。颜色条的长轴可以通过
colorbar.xaxis
或colorbar.yaxis
访问,具体取决于方向,而不是colorbar.cbar_axis
。默认的刻度器不再是
MaxNLocator(5)
,而是一个_ColorbarAutoLocator
。在单个 Axes 上多次绘制多个颜色条(例如在使用
ImageGrid
元素的cax
属性时)是不支持的;如果你之前依赖于第二个颜色条覆盖第一个颜色条,你可以在绘制第二个颜色条之前调用cax.cla()
来清除 Axes。
在弃用期间,可以将 mpl_toolkits.legacy_colorbar
rcParam 设置为 True 以在 mpl_toolkits.axes_grid1
代码中使用 mpl_toolkits.axes_grid1.colorbar
并带有弃用警告(默认),或者设置为 False 以使用 matplotlib.colorbar
。
将 pad
大小传递为 None``(默认值)作为零的同义词传递给 `.axes_grid1.axes_divider.AxesDivider` 的 ``append_axes
、new_horizontal
和 new_vertical
方法已被弃用。在未来的版本中,None
的默认值将意味着“使用 rcParams["figure.subplot.wspace"]
(default: 0.2
) 或 rcParams["figure.subplot.hspace"]
(default: 0.2
)”(取决于方向)。明确传递 pad=0
以保持旧的行为。
Axes3D#
mplot3d.axis3d.get_flip_min_max
已被弃用。
axes3d.unit_bbox
已被弃用(请改用 Bbox.unit
)。
axes3d.Axes3D.w_xaxis
、.w_yaxis
和 .w_zaxis
已被弃用(请改用 .xaxis
、.yaxis
和 .zaxis
)。
matplotlib.cm
#
cm.revcmap
已被弃用。使用 Colormap.reversed
来反转一个颜色映射。
cm.datad
不再包含以“未转换”形式存在的反转颜色映射条目。
axisartist#
mpl_toolkits.axisartist.grid_finder.GridFinderBase
已被弃用(它唯一的用途是被 GridFinder
类继承,该类在构造函数中提供了更多的默认值并直接设置了变换,因此 GridFinderBase
的方法被直接移到了 GridFinder
中)。
axisartist.axis_artist.BezierPath
已弃用(使用 patches.PathPatch
绘制任意路径)。
AxisArtist.line
现在是一个 patches.PathPatch
实例,而不是 BezierPath
实例。
从 axisartist Locators(这些 不是 “标准”刻度 Locators)返回等于 None 的因子,或者将等于 None 的因子传递给 axisartist Formatters(这些 不是 “标准”刻度 Formatters)已被弃用。请改为传递等于 1 的因子。
对于 mpl_toolkits.axisartist.axis_artist.AttributeCopier
类,构造函数、set_ref_artist
方法以及 get_attribute_from_ref_artist
的 default_value 参数已被弃用。
构造函数的弃用意味着继承自 AttributeCopier
的类不应再调用其构造函数。
定位器#
未使用的 Locator.autoscale
方法已弃用(请改为将轴限制传递给 Locator.view_limits
)。
动画#
以下 MovieWriterRegistry
类的方法和属性已被弃用:set_dirty
、ensure_not_dirty
、reset_available_writers
、avail
。
smart_bounds()
#
“smart_bounds” 功能已被弃用。这包括 Axis.set_smart_bounds()
、Axis.get_smart_bounds()
、Spine.set_smart_bounds()
和 Spine.get_smart_bounds()
。
boxplot()
#
将 Axes.boxplot
和 cbook.boxplot_stats
的 whis
参数设置为 "range" 以表示 "整个数据范围" 的做法已被弃用;请将其设置为 (0, 100)(这将被解释为百分位数)以达到相同的效果。
fill_between()
#
在 fill_between()
和 fill_betweenx()
中将标量传递给参数 where 已被弃用。虽然文档已经说明 where 必须与 x*(或 *y)的大小相同,但标量被接受并广播到 x 的大小。未来,不匹配的大小将引发 ValueError
。
scatter()
#
传递 verts 参数给 axes.Axes.scatter
已被弃用;请改用 marker 参数。
tight_layout()
#
renderer
参数在 Figure.tight_layout
中已被弃用;此方法现在始终使用缓存在 Figure
上的渲染器实例。
rcParams#
rcsetup.validate_animation_writer_path
函数已被弃用。
将 rcParams["savefig.format"]
(default: 'png'
) 设置为 "auto" 已被弃用;请改用其同义词 "png"。
将 rcParams["text.hinting"]
(default: 'force_autohint'
) 设置为 True 或 False 已被弃用;请改用它们的同义词 "auto" 或 "none"。
rcsetup.update_savefig_format
已弃用。
rcsetup.validate_path_exists
已弃用(使用 os.path.exists
检查路径是否存在)。
rcsetup.ValidateInterval
已被弃用。
日期#
dates.mx2num
已被弃用。
TK#
NavigationToolbar2Tk.set_active
已被弃用,因为它没有(可观察到的)效果。
WX#
FigureFrameWx.statusbar
和 NavigationToolbar2Wx.statbar
已被弃用。可以通过调用标准的 wx 方法来获取状态栏(frame.GetStatusBar()
和 toolbar.GetTopLevelParent().GetStatusBar()
)。
backend_wx.ConfigureSubplotsWx.configure_subplots
和 backend_wx.ConfigureSubplotsWx.get_canvas
已被弃用。
PGF#
backend_pgf.repl_escapetext
和 backend_pgf.repl_mathdefault
已被弃用。
RendererPgf.latexManager
已弃用。
FigureCanvas#
FigureCanvasBase.draw_cursor
(从未执行过任何操作,并且在任何后端中从未被重写)已被弃用。
FigureCanvasMac.invalidate
已被弃用,取而代之的是其同义词 FigureCanvasMac.draw_idle
。
各种 FigureCanvasFoo.print_foo
方法中的 dryrun
参数已被弃用。
QuiverKey 文档#
quiver.QuiverKey.quiverkey_doc
已弃用;请改用 quiver.QuiverKey.__init__.__doc__
。
matplotlib.mlab
#
mlab.apply_window
和 mlab.stride_repeat
已被弃用。
字体#
font_manager.JSONEncoder
已弃用。使用 font_manager.json_dump
来转储 FontManager
实例。
font_manager.createFontList
已被弃用。现在可以使用 font_manager.FontManager.addfont
在指定路径注册字体。
matplotlib.ft2font.FT2Image
的 as_str
、as_rgba_str
、as_array
、get_width
和 get_height
方法已被弃用。在处理之前,请使用 np.asarray
将 FT2Image
转换为 NumPy 数组。
颜色#
函数 matplotlib.colors.makeMappingArray
不再被视为公共API的一部分。因此,它已被弃用。
使用单字符颜色字符串作为颜色序列(例如“rgb”)已被弃用。请改用显式列表。
比例尺#
向 ScaleBase
及其子类 LinearScale
和 SymmetricalLogScale
传递不支持的关键字参数已被弃用,并在 3.3 版本中将引发 TypeError
。
如果向 LogScale
传递了额外的关键字参数,现在将引发 TypeError
而不是 ValueError
。
测试#
matplotlib.testing.disable_internet
模块已被弃用。请使用(例如)pytest-remotedata 代替。
matplotlib.testing
中对基于 nose 的测试的支持已被弃用(如果在同时满足以下两个条件时使用了该模块中的装饰器,则会发出弃用警告:1) matplotlib 的 conftests 尚未被调用,2) nose 在 sys.modules
中)。
testing.is_called_from_pytest
已被弃用。
在弃用期间,要强制生成nose基础测试,请先导入nose。
matplotlib.test
的 switch_backend_warn 参数无效且已被弃用。
testing.jpl_units.UnitDbl.UnitDbl.checkUnits
已被弃用。
DivergingNorm
已重命名为 TwoSlopeNorm
#
DivergingNorm
是一个误导性的名称;尽管该范数是在考虑到它可能会与发散色图一起使用的情况下开发的,但'发散'这个词并不能描述或唤起该范数的映射功能。由于该功能是单调的、连续的,并且是分段线性的,包含两个线段,因此该范数已被重命名为 TwoSlopeNorm
。
杂项#
matplotlib.get_home
已弃用(请改用 os.path.expanduser("~")
)。
matplotlib.compare_versions
已被弃用(请改用 distutils.version.LooseVersion
的比较)。
matplotlib.checkdep_ps_distiller
已被弃用。
matplotlib.figure.AxesStack
被视为私有API,并将在未来版本中从公共API中移除。
BboxBase.is_unit
已被弃用(如有需要,请检查 Bbox 的范围)。
Affine2DBase.matrix_from_values(...)
已弃用。请改用(例如)``Affine2D.from_values(...).get_matrix()``。
style.core.is_style_file
和 style.core.iter_style_files
已被弃用。
datapath
rcParam#
请使用 get_data_path
代替。(rcParam 已被弃用,因为它不能被终端用户有意义地设置。)rcParam 从 3.2.0 版本开始无效,但仅在 3.2.1 版本中被弃用。在 3.2.1+ 版本中,如果在 matplotlibrc
文件中设置了 'datapath'
,它将被尊重,但此行为将在 3.3 版本中移除。
移除#
matplotlib.testing.determinism
模块,该模块没有公开的API,已被删除。
以下API元素已被移除:
backend_gtk3.PIXELS_PER_INCH
backend_pgf.re_escapetext
,backend_pgf.re_mathdefault
.matplotlib.backends.tkagg
、matplotlib.backends.windowing
、matplotlib.backends.wx_compat
和matplotlib.compat.subprocess
模块RcParams.msg_depr
,RcParams.msg_depr_ignore
,RcParams.msg_depr_set
,RcParams.msg_obsolete
,RcParams.msg_backend_obsolete
afm.parse_afm
(使用afm.AFM
代替)axes.Axes.mouseover_set
backend_cairo.ArrayWrapper
,backend_cairo.RendererCairo.convert_path
backend_gtk3.FileChooserDialog.sorted_filetypes
(请使用sorted(self.filetypes.items())
代替)backend_pgf.get_texcommand
backend_pdf.PdfFile.texFontMap
backend_ps.get_bbox
backend_qt.FigureCanvasQt.keyAutoRepeat
(请改用event.guiEvent.isAutoRepeat
),backend_qt.error_msg_qt
,backend_qt.exception_handler
backend_wx.FigureCanvasWx.macros
backends.pylab_setup
cbook.Bunch
(使用types.SimpleNamespace
代替),cbook.Locked
,cbook.unicode_safe
,cbook.is_numlike
(使用isinstance(..., numbers.Number)
代替),cbook.mkdirs
(使用os.makedirs(..., exist_ok=True)
代替),cbook.GetRealpathAndStat
(使用cbook.get_realpath_and_stat
代替),cbook.listFiles
container.Container.set_remove_method
contour.ContourLabeler.cl
,contour.ContourLabeler.cl_xy
,contour.ContourLabeler.cl_cvalues
(请使用labelTexts
,labelXYs
,labelCValues
代替)dates.DateFormatter.strftime
,dates.DateFormatter.strftime_pre_1900
font_manager.TempCache
,font_manager.FontManager.ttffiles
,font_manager.FontManager.afmfiles
mathtext.unichr_safe
(请使用chr
代替)patches.YAArrow
(请使用patches.FancyArrowPatch
代替)sphinxext.plot_directive.remove_coding
table.Table.get_child_artists
testing.compare.compare_float
,testing.decorators.CleanupTest
,testing.decorators.ImageComparisonTest
,testing.decorators.skip_if_command_unavailable
, 支持基于nose的测试text.Annotation.arrow
(请使用text.Annotation.arrow_patch
代替)textpath.TextToPath.tex_font_map
ticker.Base
,ticker.closeto
,ticker.nearest_long
axes_grid1.axes_divider.LocatableAxesBase
,axes_grid1.axes_divider.locatable_axes_factory
,axes_grid1.axes_divider.Axes``(使用 ``axes_grid1.mpl_axes.Axes
代替),axes_grid1.axes_divider.LocatableAxes``(使用 ``axes_grid1.mpl_axes.Axes
代替)axisartist.axes_divider.Axes
,axisartist.axes_divider.LocatableAxes
(请使用axisartist.axislines.Axes
代替)hist
的 normed 关键字参数(请改用 density)在指定标记时传递
(verts, 0)
或(..., 3)
分别指定路径或圆(相反,使用verts
或"o"
)
以下 matplotlib.backends.backend_pdf.PdfFile
的成员已被移除:
nextObject
nextFont
nextAlphaState
nextHatch
nextImage
alphaStateObject
在 Matplotlib 3.0 中引入的后端模块的 required_interactive_framework
属性已移至 FigureCanvas
类中,以便第三方画布子类可以继承它,并使其更容易了解画布类所需的交互框架。
backend_qt4.FigureCanvasQT5
,它是 backend_qt5.FigureCanvasQT
的别名(但仅在 backend_qt4
中以该名称存在),已被移除。
开发变化#
Windows 构建#
之前,在构建 matplotlib._png
扩展时,构建脚本会将“png”和“z”添加到扩展的 .libraries
属性中(如果pkg-config信息不可用,这在Windows上尤其如此)。
特别是,这意味着Windows构建将查找名为 png.lib
和 z.lib
的文件;但libpng上游和zlib上游默认都不提供这些文件。(在Linux上,这将查找 libpng.so
和 libz.so
,这确实是标准名称。)
相反,在Windows上,我们现在查找 libpng16.lib
和 zlib.lib
,这些是共享库的上游名称(截至libpng 1.6.x)。
对于静态链接构建,上游名称是 libpng16_static.lib
和 zlibstatic.lib
;如果需要这样的构建,仍然需要手动重命名它们。
打包 DLL#
之前,可以通过将 Windows DLLs 复制到源代码树中,并在 setup.cfg
中设置 package_data.dlls
条目,将它们打包到 Matplotlib 的 wheel(或 sdist)中。
源代码树中复制的DLL现在总是被打包;package_data.dlls
条目不再起作用。如果你不想包含DLL,请不要将它们复制到源代码树中。