是否可以在matplotlib中手动设置次轴上的记号?

2024-06-25 22:57:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图绘制一个由函数连接的两个x轴和两个y轴的图形,这是我使用以下代码实现的:

import numpy as np
import matplotlib.pyplot as plt

def q2r(q):
    return(2*np.pi)/q
def r2q(r):
    return(2*np.pi)/r

def w2t(w):
    tau = 1/w
    return(tau*(2/0.6583))
def t2w(t):
    tau = t/(2/0.6583)
    return(1/tau)

x = np.linspace(1,10)
y = x**2

fig, axs = plt.subplots(subplot_kw = {'xlabel':'$\omega / meV$', 'ylabel':'Q / $\AA^{-1}$'})
axs.plot(x,y)
secax_x = axs.secondary_xaxis('top', xlabel='t / ps', functions = (w2t, t2w))
secax_y = axs.secondary_yaxis('right', ylabel = 'r / $\AA$', functions = (q2r, r2q))

# sets ticks on primary axes
axs.set_xticks([2,5,8])
axs.set_yticks([20,50,80])

# does nothing
secax_x.set_xticks([3,1,0.5,0.1])
secax_y.set_yticks([1,0.2,0.01])

plt.show()

example graph

因为主轴和次轴之间的关系不是线性的,所以次轴上的记号挤在一起(在示例中的x2上)或太少(在示例中的y2上)。我不希望记号的值相等,但希望手动控制次轴上记号的放置。有可能这样做吗


Tags: importreturndefasnppipltset