【问题标题】:Matplotlib adding letter ticksMatplotlib 添加字母刻度
【发布时间】:2016-04-27 01:17:41
【问题描述】:

有没有办法在现有的记号(数字)中添加两个记号(例如两个字母)? 我有:

但想添加两个刻度(字母“a”和“b”)。运行以下代码会删除数字并只留下字母,但我想要两者兼有。

ax.set_xticks((a, b))
ax.set_xticklabels(('$a$', '$b$'), size='xx-large')

【问题讨论】:

  • ax.get_xticklabels查询刻度标签,修改你要替换的,然后用ax.set_xticklabels写回呢?您也可以通过对get_xticks/set_xticks 执行相同操作来移动某些刻度。

标签: matplotlib axes


【解决方案1】:

使用annotate 而不是放置刻度是最简单的。

例如,让我们首先大致复制您的示例图:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(2.8, 11, 100)
y = 0.2 * np.exp(-0.05 * x**2) + 0.01

fig, ax = plt.subplots()

ax.fill_between(x, y, alpha=0.3, label='surface', lw=2,
                edgecolor='orange', facecolor='goldenrod')
ax.plot(x, y, color='darkred', lw=2, label='interpolated polinom')

ax.legend(fancybox=True, shadow=True)
ax.grid(ls=':')
ax.set_ylabel(r'$F[N]$', size=18)
ax.set_xlabel(r'$h[cm]$', size=18)
ax.spines['bottom'].set(linewidth=2)

plt.show()

我们可以添加您想要的“子刻度”:

labelpad = ax.xaxis.labelpad + 15
for val, letter in [(2.8, 'a'), (11, 'b')]:
    ax.annotate('${}$'.format(letter), xy=(val, 0), xytext=(0, -labelpad),
                xycoords=('data', 'axes fraction'), textcoords='offset points',
                ha='center', va='top', size=18)

【讨论】:

  • 如果我想让它们与其他抽动在同一行中,例如替换它们怎么办?
猜你喜欢
  • 2016-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-22
  • 1970-01-01
  • 2012-10-15
相关资源
最近更新 更多