如何使用 matplotlib 制作“更完整”的轴箭头

2024-01-08

我有以下代码:

from mpl_toolkits.axes_grid.axislines import SubplotZero
from matplotlib.transforms import BlendedGenericTransform
import matplotlib.pyplot as plt
import numpy

if 1:
    fig = plt.figure(1)
    ax = SubplotZero(fig, 111)
    fig.add_subplot(ax)

    ax.axhline(linewidth=1.7, color="black")
    ax.axvline(linewidth=1.7, color="black")

    plt.xticks([1])
    plt.yticks([])

    ax.text(0, 1.05, 'y', transform=BlendedGenericTransform(ax.transData, ax.transAxes), ha='center')
    ax.text(1.05, 0, 'x', transform=BlendedGenericTransform(ax.transAxes, ax.transData), va='center')

    for direction in ["xzero", "yzero"]:
        ax.axis[direction].set_axisline_style("-|>")
        ax.axis[direction].set_visible(True)

    for direction in ["left", "right", "bottom", "top"]:
        ax.axis[direction].set_visible(False)

    x = numpy.linspace(-0.5, 1., 1000)
    ax.plot(x, numpy.sin(x*numpy.pi), linewidth=1.2, color="black")

    plt.show()

生成以下图像:

与实际图表相比,轴箭头看起来有些残留。我如何稍微调整它们的大小,使它们相对于轴的宽度看起来正常。

另外 - 这里很难看到,但箭头的内部是蓝色的 - 我如何将其更改为黑色?


我的解决方案与 nebffa 的解决方案基本相同。我创建了一个最小的示例,用于计算 y 轴的箭头宽度和长度,以匹配为 x 轴指定的箭头宽度和长度。我希望这对其他人有帮助。

import pylab as pl

fig = pl.figure()
ax = fig.add_subplot(111)

x = pl.arange(-5,5,0.1)
ax.plot(x, x**2-8.8)

xmin, xmax = ax.get_xlim()
ymin, ymax = ax.get_ylim()

# removing the default axis on all sides:
for side in ['bottom','right','top','left']:
    ax.spines[side].set_visible(False)

# removing the axis ticks
pl.xticks([]) # labels
pl.yticks([])
ax.xaxis.set_ticks_position('none') # tick markers
ax.yaxis.set_ticks_position('none')

# wider figure for demonstration
fig.set_size_inches(4,2.2)

# get width and height of axes object to compute
# matching arrowhead length and width
dps = fig.dpi_scale_trans.inverted()
bbox = ax.get_window_extent().transformed(dps)
width, height = bbox.width, bbox.height

# manual arrowhead width and length
hw = 1./20.*(ymax-ymin)
hl = 1./20.*(xmax-xmin)
lw = 1. # axis line width
ohg = 0.3 # arrow overhang

# compute matching arrowhead length and width
yhw = hw/(ymax-ymin)*(xmax-xmin)* height/width
yhl = hl/(xmax-xmin)*(ymax-ymin)* width/height

# draw x and y axis
ax.arrow(xmin, 0, xmax-xmin, 0., fc='k', ec='k', lw = lw,
         head_width=hw, head_length=hl, overhang = ohg,
         length_includes_head= True, clip_on = False)

ax.arrow(0, ymin, 0., ymax-ymin, fc='k', ec='k', lw = lw,
         head_width=yhw, head_length=yhl, overhang = ohg,
         length_includes_head= True, clip_on = False)

# clip_on = False if only positive x or y values.

pl.savefig('arrow_axis.png', dpi = 300)

生产:

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

如何使用 matplotlib 制作“更完整”的轴箭头 的相关文章

  • 保存为 HDF5 的图像未着色

    我目前正在开发一个将文本文件和 jpg 图像转换为 HDF5 格式的程序 用HDFView 3 0打开 似乎图像仅以灰度保存 hdf h5py File Sample h5 img Image open Image jpg data np
  • 使用 python requests 模块时出现 HTTP 503 错误

    我正在尝试发出 HTTP 请求 但当前可以从 Firefox 浏览器访问的网站响应 503 错误 代码本身非常简单 在网上搜索一番后我添加了user Agent请求参数 但也没有帮助 有人能解释一下如何消除这个 503 错误吗 顺便说一句
  • 使用特定的类/函数预加载 Jupyter Notebook

    我想预加载一个笔记本 其中包含我在另一个文件中定义的特定类 函数 更具体地说 我想用 python 来做到这一点 比如加载一个配置文件 包含所有相关的类 函数 目前 我正在使用 python 生成笔记本并在服务器上自动启动它们 因为不同的
  • 在 django ORM 中查询时如何将 char 转换为整数?

    最近开始使用 Django ORM 我想执行这个查询 select student id from students where student id like 97318 order by CAST student id as UNSIG
  • 跟踪 pypi 依赖项 - 谁在使用我的包

    无论如何 是否可以通过 pip 或 PyPi 来识别哪些项目 在 Pypi 上发布 可能正在使用我的包 也在 PyPi 上发布 我想确定每个包的用户群以及可能尝试积极与他们互动 预先感谢您的任何答案 即使我想做的事情是不可能的 这实际上是不
  • 将 python2.7 与 Emacs 24.3 和 python-mode.el 一起使用

    我是 Emacs 新手 我正在尝试设置我的 python 环境 到目前为止 我已经了解到在 python 缓冲区中使用 python mode el C c C c将当前缓冲区的内容加载到交互式 python shell 中 显然使用了什么
  • 使用Python请求登录Google帐户

    在多个登录页面上 需要谷歌登录才能继续 我想用requestspython 中的库以便让我自己登录 通常这很容易使用requests库 但是我无法让它工作 我不确定这是否是由于 Google 做出的一些限制 也许我需要使用他们的 API 或
  • 在Python中连接反斜杠

    我是 python 新手 所以如果这听起来很简单 请原谅我 我想加入一些变量来生成一条路径 像这样 AAAABBBBCCCC 2 2014 04 2014 04 01 csv Id TypeOfMachine year month year
  • 如何将张量流模型部署到azure ml工作台

    我在用Azure ML Workbench执行二元分类 到目前为止 一切正常 我有很好的准确性 我想将模型部署为用于推理的 Web 服务 我真的不知道从哪里开始 azure 提供了这个doc https learn microsoft co
  • Python 2:SMTPServerDisconnected:连接意外关闭

    我在用 Python 发送电子邮件时遇到一个小问题 me my email address you recipient s email address me email protected cdn cgi l email protectio
  • “隐藏”内置类对象、函数、代码等的名称和性质[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我很好奇模块中存在的类builtins无法直接访问的 例如 type lambda 0 name function of module
  • 如何使用python在一个文件中写入多行

    如果我知道要写多少行 我就知道如何将多行写入一个文件 但是 当我想写多行时 问题就出现了 但是 我不知道它们会是多少 我正在开发一个应用程序 它从网站上抓取并将结果的链接存储在文本文件中 但是 我们不知道它会回复多少行 我的代码现在如下 r
  • 在 Sphinx 文档中*仅*显示文档字符串?

    Sphinx有一个功能叫做automethod从方法的文档字符串中提取文档并将其嵌入到文档中 但它不仅嵌入了文档字符串 还嵌入了方法签名 名称 参数 我如何嵌入only文档字符串 不包括方法签名 ref http www sphinx do
  • 如何通过 TLS 1.2 运行 django runserver

    我正在本地 Mac OS X 机器上测试 Stripe 订单 我正在实现这段代码 stripe api key settings STRIPE SECRET order stripe Order create currency usd em
  • Numpy - 根据表示一维的坐标向量的条件替换数组中的值

    我有一个data多维数组 最后一个是距离 另一方面 我有距离向量r 例如 Data np ones 20 30 100 r np linspace 10 50 100 最后 我还有一个临界距离值列表 称为r0 使得 r0 shape Dat
  • javascript 是否有等效的 __repr__ ?

    我最接近Python的东西repr这是 function User name password this name name this password password User prototype toString function r
  • 仅第一个加载的 Django 站点有效

    我最近向 stackoverflow 提交了一个问题 标题为使用mod wsgi在apache上多次请求后Django无限加载 https stackoverflow com questions 71705909 django infini
  • 为什么 Pickle 协议 4 中的 Pickle 文件是协议 3 中的两倍,而速度却没有任何提升?

    我正在测试 Python 3 4 我注意到 pickle 模块有一个新协议 因此 我对 2 个协议进行了基准测试 def test1 pickle3 open pickle3 wb for i in range 1000000 pickle
  • 如何应用一个函数 n 次? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 假设我有一个函数 它接受一个参数并返回相同类型的结果 def increment x return x 1 如何制作高阶函数repeat可以
  • 更改 Tk 标签小部件中单个单词的颜色

    我想更改 Tkinter 标签小部件中单个单词的字体颜色 我知道可以使用文本小部件来实现与我想要完成的类似的事情 例如使单词 YELLOW 显示为黄色 self text tag config tag yel fg clr yellow s

随机推荐

  • 使用 Handlebars 重复查找

    给定一个对象数组 我想使用嵌套对象的一个 属性来查找 Handlebars 中关联对象的各种属性 在此示例中 我想显示每所大学的学生列表 以及每个学生所属院系的信息 我的代码有效 但嵌套查找非常重复 lookup lookup majors
  • 检测脚本的位置而不是调用它的页面

    我想知道是否可以以某种方式找到脚本的位置而不是调用它的页面 例如如果页面是http xxx yyy com a htm http xxx yyy com a htm 然后我写了 location href 我得到了那个位置而不是http a
  • 从 C++ 访问 QML 对象

    以下是将 QML 文档加载到 C 中的代码 QmlDocument qml QmlDocument create asset main qml parent this Create root object for the UI Abstra
  • SelectionStart 和 SelectionEnd 对于文本区域意味着什么?

    我遇到了以下代码片段 将 Enter 插入到按下 ctrl Enter 的文本区域中的文本中 txtChatMessage keydown MessageTextOnKeyEnter function MessageTextOnKeyEnt
  • Swift 中的懒惰

    Why is lazy这里用的 extension SequenceType func mapSome u transform Generator Element gt U gt U var result U for case let x
  • 在haskell中剖析java类文件

    我今年早些时候刚刚开始学习 Haskell 语言 并且正在开发一个项目 该项目输入一个 java 类文件 即 FileName1 class 并剖析该文件以打印出以下内容 类文件定义的类名 类的方法数量 它们的名称和类型 我做了一些研究 发
  • C# 数据库应用程序并发

    我曾经用 C 编写过一个多用户应用程序 使用 SQL Server 2005 Express 作为后端 我有一个订单集合 为了使用此类 您需要实例化它并调用 Load CustomerCode 方法 以便使用指定客户的订单填充集合 我的问题
  • Vb.Net 属性语法

    我问过我的同事 甚至试图在互联网上查找这个问题 但我一直无法得到答案 有什么区别 Public Property Name As String and Public Property Name As String 在属性名称后面添加 有什么
  • 如何使这个简单的 OpenGL 代码(在“宽松”的 3.3 和 4.2 配置文件中工作)在严格的 3.2 和 4.2 核心配置文件中工作?

    我有一些 3D 代码 我注意到它们不会在严格的核心配置文件中呈现 但在 正常 未明确请求仅作为核心 配置文件上下文中正常 为了隔离这个问题 我编写了最简单的 OpenGL 程序 仅绘制一个三角形和一个矩形 我已经发布了OpenGL程序作为这
  • ASP.NET MVC - 简单面包屑(站点地图)

    我开发了一个 ASP NET MVC 2 应用程序 我想在每个页面中放置一个简单的面包屑 站点地图 如下所示 首页 gt 电影 gt 详情 它等于 URL http localhost home movies details http lo
  • 带有页眉、页脚和正文的简单 div

    我需要一个简单的div with header footer and body content The header and footer需要是fixed和heightdiv 的应该是250px or max 500px和它的width i
  • 从标准输入 C++ 读取数百万个整数的最快方法?

    我正在开发一个排序项目 现在主要瓶颈是读取数据 我的程序需要大约 20 秒才能对从 stdin 读取的 100 000 000 个整数进行排序cin and std ios sync with stdio false 但事实证明 其中 10
  • jquery 事件在附加后不起作用

    http jsfiddle net YsnhT 2 http jsfiddle net YsnhT 2 Jquery 事件在追加后不起作用 单击 保存 按钮后 我需要文本区域的值 span8 on click btn function va
  • 调用生成的 Serializer() 方法时收到 NoClassDefFoundError

    我得到了NoClassDefFoundError当尝试调用Foo serializer 上的方法 Serializable class 这是我的测试用例 Serializable data class Foo val data String
  • XMLHttpRequest 基本身份验证失败

    知道为什么吗XMLHttpRequest具有正确的凭据Pebble JS Framework http developer getpebble com 2 guides javascript guide html在 Android 上无法进
  • 铁路搜索表

    我正在创建一个跟踪用户和成就的应用程序 例如 xbox live 等 这些表通过连接表链接 我希望在我的索引上有一个搜索表单 让用户输入用户名 然后加载一个新页面 其中包含用户已获得的所有成就的列表 我不完全确定如何在索引上设置此搜索表单
  • 你能在Sqlite3(使用Django)中实现不区分大小写的“唯一”约束吗?

    假设我正在使用 Python 2 5 的内置默认 sqlite3 并且我有一个包含以下代码的 Django 模型类 class SomeEntity models Model some field models CharField max
  • 动态构建 SQL 查询(postgres 和 javascript)

    我有一个 javascript 函数需要返回产品列表 它使用 postgres 来检索产品列表 该函数传递一个categoryId和一个可选的typeId 所以我需要基于这些构建一个 SQL 查询 当然我可以做这样的事情 async fun
  • 具有多个 bert 输入的 SMOTE

    我正在使用 Keras 和 Bert HuggingFace 构建多类文本分类模型 但我有一个非常不平衡的数据集 我使用了 Sklearn 中的 SMOTE 来为欠平衡类生成额外的样本 我总共有 45 个 当我使用 Bert Tokeniz
  • 如何使用 matplotlib 制作“更完整”的轴箭头

    我有以下代码 from mpl toolkits axes grid axislines import SubplotZero from matplotlib transforms import BlendedGenericTransfor