matplotlib 图中共享 y 轴之间的 twinx 非线性映射

如何解决matplotlib 图中共享 y 轴之间的 twinx 非线性映射

我有一些用 pcolormesh 绘制的 3d 数据。

x 轴是时间,y 轴是高度。

高度具有与之关联的势 (E),但从高度 (y) 到势 (E) 的映射是非线性的。

我想在图的右侧添加一个轴,显示基于左侧值的正确电位。我并不特别关心左右刻度线的排列(如 this solution 中的情况)。如果在右轴上有任何“不错的数字”刻度会很有用。

我已尝试根据 celsius-farenheit example in the matplotlib docs置顶部和底部点的 ylim,但这假设起点和终点之间存在线性比例,而此处并非如此。

最后,我尝试使用 funcformatter,但是电位的缩放需要给出两个外部常量,而且我找不到可以将常量传递给 funcformatter 的方法

到目前为止我的代码看起来像:

import numpy as np
import matplotlib.pyplot as plt


time = np.arange(0.0,11.0,1.0)
y = np.arange(0.0,1.0)
data = np.random.randint(1,100,size=(11,11))

fig,ax=plt.subplots(1,1)

im=ax.pcolormesh(time,y,data,shading='nearest')
ax.set_xlabel('time')
ax.set_ylabel('height')
ax.set_ylim(y.min(),y.max())

ax_E = ax.twinx()
ax_E.set_ylabel('Potential E')

plt.savefig('test.png')

目前右手边的 y 轴具有从 0 到 1.0 的线性刻度。 我希望将其替换为根据左侧 y 轴上的 y 值显示正确电位的比例尺。

我想用于潜力的函数是这样的:

def get_E(mu,ymax,y):
    p2 = 2.0*mu/ymax**3
    Jmin = 2.0*np.sqrt(p2)*ymax
    pmin = Jmin/(2.0*y)
    E = np.sqrt(mu**2*pmin**2 + mu**2) - mu
    return E

即高度非线性,传递给它 2 个常数(mu 和 ymax)。

您能提供的任何帮助将不胜感激。 我已经尽最大努力寻找这个特定问题的解决方案,但如果我错过了什么,我深表歉意。 请提出任何问题以澄清。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?