【问题标题】:Adjusting tick label size on twin axes调整双轴上的刻度标签大小
【发布时间】:2012-10-05 03:20:43
【问题描述】:

我在更改带有双轴的绘图上的刻度标签属性时遇到问题。我希望文本很小,并且字体与默认字体不同。在我尝试使用 twiny() 之前,我找到了一种运行良好的方法。如图所示,第二个轴不响应刻度格式指令。我错过了一些重要的东西还是 matplotlib 中存在错误?

Ubuntu 12.04、Python 2.7.3、matplotlib 1.1.1rc

#!/usr/bin/env python
# coding: utf-8

from matplotlib import pyplot as p
from numpy import sin, cos, arange

x = arange(0, 10, .01)

for plotnum in range(1,5):
    p.subplot(2, 2, plotnum)
    ax1 = p.gca()
    p.plot(sin(x),x)
    ax2 = p.twiny()
    p.plot(cos(x)+plotnum,x, 'g--')

    # Set size all tick labels
    # Works for first axes (lower x-ticks) and can also change font
    for tickset in [ax1.xaxis.get_major_ticks()]:
        [(tick.label.set_fontsize(plotnum*4), tick.label.set_fontname('ubuntu mono')) for tick in tickset]

    # Does not work for second axes (upper x-ticks)
    for tickset in [ax2.xaxis.get_major_ticks()]:
        [(tick.label.set_fontsize(plotnum*2), tick.label.set_fontname('ubuntu mono')) for tick in tickset]

    # This works, but doesn't allow changing font
    #ax2.tick_params(axis='both', which='major', labelsize=plotnum*2)

这是一张图片:

编辑:修复了刻度线的不正确缩进

编辑:插入图片(Thriveth)

【问题讨论】:

    标签: matplotlib axes


    【解决方案1】:

    根据 Tick 类文档,Ticks 可以有两个标签(label1label2):

    • 1 表示 xticks 的绘图底部,yticks 表示左侧
    • 2 表示 xticks 的顶部和 yticks 的右侧

    label 属性始终引用label1

    您可以通过将 ax2 行更改为:

    for tickset in [ax2.xaxis.get_major_ticks()]:
        [(tick.label2.set_fontsize(plotnum*2), tick.label2.set_fontname('ubuntu mono'))
    

    get_majorticklabels 函数将在您需要 label1label2 时发挥作用并简化您的脚本:

    from matplotlib import pyplot as p
    from numpy import sin, cos, arange
    
    x = arange(0, 10, .01)
    
    for plotnum in range(1,5):
        p.subplot(2, 2, plotnum)
        ax1 = p.gca()
        p.plot(sin(x),x)
        ax2 = p.twiny()
        p.plot(cos(x)+plotnum,x, 'g--')
        for label in ax1.xaxis.get_majorticklabels():
            label.set_fontsize(plotnum * 4)
            label.set_fontname('courier')
        for label in ax2.xaxis.get_majorticklabels():
            label.set_fontsize(plotnum * 4)
            label.set_fontname('verdana')
    

    注意,我将标签更改例程放在循环中!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-08
      • 2015-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-14
      • 2021-10-29
      • 1970-01-01
      相关资源
      最近更新 更多