首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在matplotlib中添加第二个x轴

如何在matplotlib中添加第二个x轴
EN

Stack Overflow用户
提问于 2012-05-09 18:32:31
回答 5查看 174.2K关注 0票数 88

我有一个非常简单的问题。我需要在我的曲线图上有第二个x轴,并且我希望这个轴有一定数量的抽屉,对应于第一个轴的特定位置。

让我们用一个例子来试试。在这里,我绘制了暗物质质量作为膨胀因子的函数,定义为1/(1+z),范围从0到1。

代码语言:javascript
复制
semilogy(1/(1+z),mass_acc_massive,'-',label='DM')
xlim(0,1)
ylim(1e8,5e12)

我希望在我的图的顶部有另一个x轴,显示扩展因子的一些值对应的z。这有可能吗?如果是,我怎样才能有xtics ax?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-05-09 21:49:02

我从@Dhara的答案中的注释中得到了提示,听起来你想通过一个从旧的x轴到新的x轴的函数来设置一个new_tick_locations列表。下面的tick_function接受一个点数组,将它们映射到一个新值,并对它们进行格式化:

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax1 = fig.add_subplot(111)
ax2 = ax1.twiny()

X = np.linspace(0,1,1000)
Y = np.cos(X*20)

ax1.plot(X,Y)
ax1.set_xlabel(r"Original x-axis: $X$")

new_tick_locations = np.array([.2, .5, .9])

def tick_function(X):
    V = 1/(1+X)
    return ["%.3f" % z for z in V]

ax2.set_xlim(ax1.get_xlim())
ax2.set_xticks(new_tick_locations)
ax2.set_xticklabels(tick_function(new_tick_locations))
ax2.set_xlabel(r"Modified x-axis: $1/(1+X)$")
plt.show()

票数 128
EN

Stack Overflow用户

发布于 2012-05-09 19:24:54

可以使用twiny创建2个x轴比例。例如:

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax1 = fig.add_subplot(111)
ax2 = ax1.twiny()

a = np.cos(2*np.pi*np.linspace(0, 1, 60.))

ax1.plot(range(60), a)
ax2.plot(range(100), np.ones(100)) # Create a dummy plot
ax2.cla()
plt.show()

参考:http://matplotlib.sourceforge.net/faq/howto_faq.html#multiple-y-axis-scales

输出:

票数 29
EN

Stack Overflow用户

发布于 2014-05-23 22:45:00

如果你想让你的上轴是下轴刻度值的函数,你可以这样做。请注意:有时get_xticks()会有一个可见范围之外的刻度,您必须在转换时考虑到这一点。

代码语言:javascript
复制
import matplotlib.pyplot as plt

fig, ax1 = plt.subplots()

ax1 = fig.add_subplot(111)

ax1.plot(range(5), range(5))

ax1.grid(True)

ax2 = ax1.twiny()
ax2.set_xticks( ax1.get_xticks() )
ax2.set_xbound(ax1.get_xbound())
ax2.set_xticklabels([x * 2 for x in ax1.get_xticks()])

title = ax1.set_title("Upper x-axis ticks are lower x-axis ticks doubled!")
title.set_y(1.1)
fig.subplots_adjust(top=0.85)

fig.savefig("1.png")

提供:

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10514315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档