【问题标题】:Matplotlib scatter(): default value for size, marker shapeMatplotlib scatter():大小、标记形状的默认值
【发布时间】:2016-01-01 08:39:29
【问题描述】:

有没有办法为 matplotlib plt.scatter() 设置 默认 标记大小 (s) 参数(或同样设置标记的形状)?

mpl.rcParams.keys() 具有线图的设置,例如

import matplotlib as mpl
mpl.rcParams['lines.marker']='D'

...但它们似乎与plt.scatter() 无关。

谢谢。

澄清:

我想使用像mpl.rcParams()这样的配置机制,或者其他一些比较文明的方法。本地修改库代码不是。

另一方面,如果目前无法完成并且有人向 Matplotlib 提交了补丁,那就太好了。

【问题讨论】:

  • 目前看来这不是可配置的。
  • @tcaswell - 这似乎是一个奇怪的遗漏,但它肯定是可能的。除非有人在几天内提出答案,否则我将使用 mpl 打开功能请求问题。
  • 作为 2016 年 3 月推出的修复程序,可以设置散点图的默认标记大小 - 它基于 rcParams['lines.markersize'],请参阅提交:github.com/matplotlib/matplotlib/commit/…。由于这是对该文件的最新提交,因此很可能仍然无法设置散点图的默认标记形状(默认值似乎被硬编码为“o”)。

标签: python matplotlib


【解决方案1】:

在当前版本中,标记大小定义为:

"以点为单位的标记大小**2。默认为 rcParams['lines.markersize'] ** 2。"

所以现在设置 rcParams['lines.markersize'] 也应该改变散点图的默认标记大小。见https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.scatter.html

【讨论】:

    【解决方案2】:

    在当前版本的 matplotlib (http://matplotlib.org/users/customizing.html) 中是不可能的。

    但是,在 GitHub (https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/rcsetup.py#L1112) 上的主分支中可以更改默认标记。

    【讨论】:

      【解决方案3】:

      当然有,都在pyplot.py

      他们代码中的一个 sn-p:

      def scatter(x, y, s=20, c=None, marker='o', cmap=None, norm=None, vmin=None,
                  vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None,
                  hold=None, data=None, **kwargs):
      

      大小设置为 20 s=20,标记形状为圆形 marker='o',与他们的文档一致

      【讨论】:

      • ...不确定这有什么帮助。我的问题是关于设置 default 大小;不是在特定的 scatter() 调用中这样做
      • 这不是一个特定的调用,默认大小。如果您更改其中的 s 值,它将在 all plt.scatter() 中更改
      • 问题是“不是在本地修改库代码”,我想这就是你的建议,@Leb,对吧?
      猜你喜欢
      • 2023-03-17
      • 2013-06-18
      • 2018-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多