【发布时间】:2013-02-13 02:13:27
【问题描述】:
我正在尝试使用 matplotlib 绘制一个具有两个相互非线性的 x 轴的图形。我想得到的情节是这样的:
基本上,年龄取决于红移。它是非线性的,需要计算。我想将年龄和红移都作为 x 轴。我怎样才能做到?
【问题讨论】:
标签: python matplotlib
我正在尝试使用 matplotlib 绘制一个具有两个相互非线性的 x 轴的图形。我想得到的情节是这样的:
基本上,年龄取决于红移。它是非线性的,需要计算。我想将年龄和红移都作为 x 轴。我怎样才能做到?
【问题讨论】:
标签: python matplotlib
【讨论】:
我是这样做的:
from mpl_toolkits.axes_grid.parasite_axes import SubplotHost
fig = plt.figure(1, figsize=(figwidth,figheight))
ax = SubplotHost(fig, 1,1,1)
fig.add_subplot(ax)
#plotting as usual
ax2 = ax.twin() # ax2 is responsible for "top" axis and "right" axis
ax2.axis["right"].toggle(ticklabels=False)
ax2.xaxis.set_major_formatter(FuncFormatter(fmt_zToEta)) #set eta coord format
#with a function for the Z to eta transform for plot labels
def fmt_zToEta(x, pos=None):
#...
return transformed_label
我还记得从那个红移示例开始 ;-)
我认为SubPlotHost 的事情是必要的,但我不是 100% 确定,因为我从我现有的(子)情节中撕下了它,而没有检查它是否运行良好。
【讨论】: