Matplotlib 3.1的新增功能¶
有关自上次修订以来的所有问题和请求的列表,请参阅 GitHub 统计 .
Table of Contents
- Matplotlib 3.1的新增功能
- 新特点
- Figure、FigureCanvas和后端
- 斧头和艺术家
- 轴和记号
- 补充
Axis.get_inverted
和Axis.set_inverted
- 调整默认次要刻度间距
EngFormatter
现在接受 用语 , 用语文本 仅作为关键字参数
- 补充
- 动画和交互性
- 配置、安装和开发
新特点¶
ConciseDateFormatter
¶
默认情况下使用的自动日期格式化程序可能非常冗长。可以访问一个新的格式化程序,它试图使刻度标签适当简洁。
(Source code _, png , pdf )
辅助x/y轴支撑¶
新方法提供了通过将第二个轴添加到现有轴的功能 Axes.secondary_xaxis
和 Axes.secondary_yaxis
. 见 次轴 举个例子。
(Source code _, png , pdf )
FuncScale
对于任意轴比例¶
一个新的 FuncScale
添加了类(和 FuncTransform
)允许用户无需编写新的 ScaleBase
. 可通过以下方式访问:
ax.set_yscale('function', functions=(forward, inverse))
在哪里? forward
和 inverse
是返回比例变换及其倒数的可调用项。请参见中的最后一个示例 规模 .
散点图例¶
介绍了一种创建散点图图例的新方法。以前,为了获得一个 scatter()
绘图,可以绘制多个散点,每个散点都有一个单独的标签,也可以创建代理美工器以手动显示在图例中。现在, PathCollection
提供一个方法 legend_elements()
以自动方式获取散点图的句柄和标签。这使得为散点图创建图例非常简单
(Source code _, png , pdf )
可以在中找到一个示例 自动创建图例 .
Matplotlib不再需要在MacOSX后端构建框架应用程序¶
matplotlib的早期版本需要python框架构建才能工作。应用程序类型已更新为不再需要此项,因此MacOSX后端应该与非框架python一起工作。
这也增加了对PyPy3的MacOSX后端的支持。
Figure、FigureCanvas和后端¶
图.frameon现在是图形修补程序可见性状态的直接代理¶
访问 Figure.frameon
(包括via get_frameon
和 set_frameon
现在直接转到底层矩形艺术家的可见性 (Figure.patch.get_frameon
, Figure.patch.set_frameon
)
pil_kwargs 添加到savefig的参数¶
Matplotlib使用Pillow处理JPEG和TIFF格式的保存。这个 savefig()
函数获得了 pil_kwargs 关键字参数,可用于将参数转发到Pillow的 pillow.Image.save()
.
这个 pil_kwargs 参数也可以在保存为PNG时使用。在这种情况下,Matplotlib也使用Pillow的 pillow.Image.save()
而不是通过自己的内置PNG支持。
添加 inaxes
方法到 FigureCanvasBase
¶
这个 FigureCanvasBase
班级现在有一个 inaxes
方法检查某个点是否在轴中,并返回最顶端的轴,否则返回无。
cairo后端默认为pycairo而不是cairoffi¶
在某些情况下,这会导致更快的导入/运行时性能。如果pycairo不可用,后端将回到cairoffi。
斧头和艺术家¶
轴网格1和轴对称轴不再绘制两次脊椎¶
以前,脊椎 axes_grid1
和 axisartist
轴将被绘制两次,导致一个“大胆”的外观。情况不再是这样了。
artistinspector.get_别名的返回类型已更改¶
ArtistInspector.get_aliases
以前返回的别名集为 {{fullname: {{alias1: None, alias2: None, ...}}}}
. dict-to-none映射用于模拟早期版本的Python中的集合。它现在已经被一套替换了,即 {{fullname: {{alias1, alias2, ...}}}}
.
此值也存储在 ArtistInspector.aliasd
也发生了同样的变化。
ConnectionPatch
接受任意变换¶
或者像 "data"
或 "axes fraction"
, ConnectionPatch
现在接受任何 Transform
作为输入 科尔达 和 科尔多斯 论据。这允许在不同用户定义的坐标系中定义的点之间绘制线。另请参见 Connect Simple01 example .
mplot3d Line3D现在允许{set,get}u data_3d¶
使用mplot3d中的3d投影创建的线现在可以使用 get_data_3d()
它返回包含(x,y,z)数据的array_likes元组。相当于 set_data_3d
可用于修改现有Line3D的数据。
Axes3D.voxels
现在对生成的体素进行着色¶
这个 Axes3D.voxels
方法现在采用 阴影 默认为的参数 True
. 这将根据面方向对面进行着色,其行为与匹配参数的行为类似 plot_trisurf()
和 bar3d()
. 下面的图显示了这如何影响输出。
(Source code _, png , pdf )
轴和记号¶
补充 Axis.get_inverted
和 Axis.set_inverted
¶
这个 Axis.get_inverted
和 Axis.set_inverted
方法查询并设置轴是否使用“反转”方向(即x轴向左递增,y轴向下递增)。
他们执行的任务与 Axes.xaxis_inverted
, Axes.yaxis_inverted
, Axes.invert_xaxis
和 Axes.invert_yaxis
,具体的区别是 Axis.set_inverted
使设置轴的反转更容易,而不管它以前是否反转过。
调整默认次要刻度间距¶
对于间隔2.5个单位的主要刻度,默认的次要刻度间距从0.625更改为0.5。
EngFormatter
现在接受 用语 , 用语文本 仅作为关键字参数¶
已将公共API添加到 EngFormatter
控制如何呈现ticklabels中的数字。默认情况下, 用语文本 评估为 rcParams["axes.formatter.use_mathtext'"]
和 用语 评估为 rcParams["'text.usetex'"]
.
如果其中一个是 True
然后这些数字将被封装成 $
标志。使用时 TeX
这意味着数字将以TeX的数学字体显示。使用mathtext时 $
数字周围的符号将确保Unicode呈现(如mathtext所暗示的)。这将确保在使用mathtext时,记号中的减号呈现为Unicode减号(U+2212)(不依赖于 fix_minus
方法)。
动画和交互性¶
支持向前/向后鼠标按钮¶
图管理者现在支持 button_press
事件,类似于 key_press
事件。这允许将操作绑定到鼠标按钮(请参见 MouseButton
)该机制的第一个应用是支持使用Qt5后端创建的图形中的向前/向后鼠标按钮。
progress_callback 参数 save()
¶
方法 Animation.save
获得了一个可选的 progress_callback 用于通知保存进度的参数。
添加 cache_frame_data
只包含关键字的参数 animation.FuncAnimation
¶
matplotlib.animation.FuncAnimation
默认情况下一直在缓存帧数据;但是,这种缓存在某些情况下并不理想,例如 FuncAnimation
只需交互绘制(不保存),帧数据所需内存相当大。通过添加 cache_frame_data 只有关键字参数,用户现在可以禁用此缓存;因此,这个新参数提供了解决问题的方法 #8528 .
无止境循环礼品与枕头作家¶
我们承认,大多数人想看GIF不止一次。使用PillowWriter将动画保存为GIF现在会生成一个无休止的循环GIF。
调整的 matplotlib.widgets.Slider
垂直定向¶
这个 matplotlib.widgets.Slider
小部件现在接受一个可选参数 方向 指示方向 ('horizontal'
或 'vertical'
)滑块应该带的。
改进了颜色条存在时光标下图像值的格式设置¶
当一个colorbar出现时,它的格式化程序现在被用来格式化状态栏中鼠标光标下的图像值。例如,对于显示值10000和10001的图像,状态栏现在(使用默认设置)将值显示为 10000
和 10001
),而这两个值以前都显示为 1e+04
.
MouseEvent按钮属性现在是IntEnum¶
The button
attribute of MouseEvent
instances can take the values
None, 1 (left button), 2 (middle button), 3 (right button), "up" (scroll), and
"down" (scroll). For better legibility, the 1, 2, and 3 values are now
represented using the enum.IntEnum
class matplotlib.backend_bases.MouseButton
,
with the values MouseButton.LEFT
(== 1
), MouseButton.MIDDLE
(== 2
),
and MouseButton.RIGHT
(== 3
).
配置、安装和开发¶
MATPLOTLIBRC环境变量现在可以指向任何“文件”路径¶
这包括设备文件;特别是在Unix系统上,可以设置 MATPLOTLIBRC
到 /dev/null
忽略用户的matplotlibrc文件并返回到Matplotlib的默认值。
作为提醒,如果 MATPLOTLIBRC
指向一个目录,Matplotlib将尝试从中加载matplotlibrc文件 $MATPLOTLIBRC/matplotlibrc
.
允许LaTeX代码 pgf.preamble
和 text.latex.preamble
在MATPLOTLIBRC文件中¶
以前,rc文件密钥 rcParams["pgf.preamble"]
(default: ''
) 和 rcParams["text.latex.preamble"]
(default: ''
) 使用逗号作为分隔符进行分析。这将破坏有效的 Latex 代码,例如:
\usepackage[protrusion=true, expansion=false]{microtype}
解析被修改为将完整的行传递给LaTeX系统,保留所有逗号。从Python脚本中传递一个字符串列表仍然可以正常工作。
新建日志API¶
matplotlib.set_loglevel
/ pyplot.set_loglevel
可以调用以显示更多(或更少)详细的日志记录输出。