从 matplotlib 刻度标签格式中删除前导 0

2024-04-15

如何在 matplotlib 中将数字十进制数据(例如 0 和 1 之间)的刻度标签更改为“0”、“.1”、“.2”而不是“0.0”、“0.1”、“0.2”?例如,

hist(rand(100))
xticks([0, .2, .4, .6, .8])

将标签格式设置为“0.0”、“0.2”等。我知道这会消除“0.0”中的前导“0”和“1.0”上的尾随“0”:

from matplotlib.ticker import FormatStrFormatter
majorFormatter = FormatStrFormatter('%g')
myaxis.xaxis.set_major_formatter(majorFormatter) 

这是一个好的开始,但我也想去掉“0.2”和“0.4”等上的“0”前缀。如何才能做到这一点?


虽然我不确定这是最好的方法,但您可以使用matplotlib.ticker.FuncFormatter http://matplotlib.sourceforge.net/api/ticker_api.html#matplotlib.ticker.FuncFormatter去做这个。例如,定义以下函数。

def my_formatter(x, pos):
    """Format 1 as 1, 0 as 0, and all values whose absolute values is between
    0 and 1 without the leading "0." (e.g., 0.7 is formatted as .7 and -0.4 is
    formatted as -.4)."""
    val_str = '{:g}'.format(x)
    if np.abs(x) > 0 and np.abs(x) < 1:
        return val_str.replace("0", "", 1)
    else:
        return val_str

现在,您可以使用majorFormatter = FuncFormatter(my_formatter)来替换majorFormatter在问题中。

完整示例

让我们看一个完整的例子。

from matplotlib import pyplot as plt
from matplotlib.ticker import FuncFormatter
import numpy as np

def my_formatter(x, pos):
    """Format 1 as 1, 0 as 0, and all values whose absolute values is between
    0 and 1 without the leading "0." (e.g., 0.7 is formatted as .7 and -0.4 is
    formatted as -.4)."""
    val_str = '{:g}'.format(x)
    if np.abs(x) > 0 and np.abs(x) < 1:
        return val_str.replace("0", "", 1)
    else:
        return val_str

# Generate some data.
np.random.seed(1) # So you can reproduce these results.
vals = np.random.rand((1000))

# Set up the formatter.
major_formatter = FuncFormatter(my_formatter)

plt.hist(vals, bins=100)
ax = plt.subplot(111)
ax.xaxis.set_major_formatter(major_formatter)
plt.show()

运行此代码会生成以下直方图。

请注意,刻度标签满足问题中要求的条件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 matplotlib 刻度标签格式中删除前导 0 的相关文章

随机推荐

  • 通过蓝牙检测附近的另一台 Android 设备

    好吧 我这里有一个有点奇怪的问题 我正在开发一款 Android 游戏 我希望 Android 手机能够检测到彼此的存在 搜索其他玩家的设备将知道其他玩家设备的蓝牙 MAC 地址 来自游戏数据库 但是设备不会配对 并且设备不会处于可发现模式
  • linux:禁用使用环回并通过一个组件的 2 个 eth 卡之间的线路发送数据[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一个带有 2 个 eth 卡的计算机 通过跳线连接 从第一个到第二个的直接以太网电缆 Linux已安装 我想从第一个网卡向第二个网卡发送数据 我想
  • 是否可以替换 64 位编码图像中的颜色?

    有没有办法获取 64 进制字符串 例如 copyIcon background url data image png base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8 9hAAAAW0lEQV
  • Windows 8 桌面上的 Chrome 浏览器:触摸支持错误

    Windows 8 桌面上的 Chrome 浏览器 版本 23 0 1271 97 被错误地识别为支持触摸事件 实际上它是一个桌面 也就是说 它不支持触摸事件 请参阅 Modernizr Touch 测试示例 http modernizr
  • IE8 中使用 Fancybox 的 jQuery 问题

    我最近收购了一个旧网站 我们谈论的是表格 图像地图 凡是你能想到的 我被要求将 Flash 画廊的旧链接放入灯箱中 我只是用了一个javascript openLightbox 在画廊链接 右上角 上 我知道我知道 但是这看起来并不不合时宜
  • tcp_max_syn_backlog 和 somaxconn 有什么区别?

    我一直在阅读一些关于 Linux 上的 TCP 实现的文章 我很困惑 它们之间有什么区别net ipv4 tcp max syn backlog and net core somaxconn和backlog作为参数传递给listen 系统调
  • 在Excel中通过VBA调用COM加载项

    我有一个用 VSTO 编写的 COM 加载项 我想使用 VBA 宏来调用它 对于加载项 我需要启动它 输入一些文本 自动 然后运行应用程序 该加载项都是按钮 我无法轻松访问代码 因为其中一些代码是加密的 它是第三方 遗憾的是 当单击此加载项
  • 如何隐藏我的源代码以免被复制

    最近有人通知我 我的网站被复制了 当我查看他给我的链接时 我发现除了徽标和文本之外 该网站与我的网站相同 有没有办法隐藏我的代码 或者使我的页面无法右键单击 我在一些网站上看到 如果您访问http example com images ht
  • unique_ptr 的初始化有什么问题?

    有人可以告诉我 以下 unique ptr 初始化有什么问题吗 int main unique ptr
  • 如何动态更改文本字段中特定文本的颜色?

    Consider bellow image I want to dynamically change the text color of part of the text based on the user input text not t
  • Eclipse中的部署目录在哪里?

    我正在 Eclipse 中开发一个 Web 应用程序 部署目录树位于哪里 在我的 Java 工作区树中的 Apache 目录结构或某些子目录树结构中 我问这个问题是因为当我的教程应用程序的更新不起作用时 我去浏览目录树 并且假设src子树代
  • WPF:将 DataGrid 绑定到列表

    有趣的是 有时简单的事情会在背后咬我一口 我可以使用 DataGridTextColumn 将 DataGrid 很好地绑定到某个任意类的集合 如下所示 bound to List
  • 使用 web-fragment 时 tagdir 属性无效

    我正在使用 web fragment 功能在 jar 中维护 JSP 和标签 并且使用这种方法 我的 JSP 页面无法找到 tagdir 并导致 此标签库的 tagdir 属性值无效 这是我的罐子里的结构 META INF 资源 WEB I
  • 在 Java 中将颜色名称转换为 RGB 值

    当颜色名称作为输入给出时 我想要一个 RGB 值 以下代码适用于某些颜色 我猜适用于红色等原色 但适用于其他一些颜色 例如青色和淡紫色 import java awt Color import javax swing text html S
  • 如何找到最新的 gradle 版本和包装器

    嗨 我对 Android 开发相当陌生 我对 Gradle 版本和 gradle wrapper properties 中的分发 url 有疑问 classpath com android tools build gradle gradle
  • 如何使用 iOS Swift 更新 firebase 中的单个数组元素?

    这里我使用 firestore 查询来更新 插入数据 如何将数组值的字典更新到 firebase 数据库 here is my firestore data structure 现在可以获取数据slot1 gt 第 0 个位置值在模型类中
  • 谷歌图表显示的是金钱而不是百分比

    给定饼图的数据 data new google visualization arrayToDataTable Sales Revenue Distribution Author 5 Company 2 Tax 0 4 Payment Pro
  • 如何解压缩C中的字符数组

    我需要创建函数 char decompress const char src 该函数的输入是一些字符串 Hello world gt Hello world Hel2o world 10 gt Hello world 正如您所看到的 如果有
  • 使用 IntelliJ 运行 JUnit 测试

    我正在使用 IntelliJ 2018 1 并且我正在尝试运行TeaVM http teavm org JUnit 测试 但运行测试时CTRL SHIFT F10测试被跳过 RunWith TeaVMTestRunner class Ski
  • 从 matplotlib 刻度标签格式中删除前导 0

    如何在 matplotlib 中将数字十进制数据 例如 0 和 1 之间 的刻度标签更改为 0 1 2 而不是 0 0 0 1 0 2 例如 hist rand 100 xticks 0 2 4 6 8 将标签格式设置为 0 0 0 2 等