【问题标题】:How to change the font size for multiple axes labels (created with host_subplot API)如何更改多个轴标签的字体大小(使用 host_subplot API 创建)
【发布时间】:2015-04-03 05:36:40
【问题描述】:

我在互联网上查看,绝对所有具有多个轴的示例的 xlabel 和 ylabel 的默认值都非常小

我使用以下代码来创建坐标区:

from mpl_toolkits.axes_grid1 import host_subplot
import mpl_toolkits.axisartist as AA

...

    ax=[]
    if  twoaxes or threeaxes:
        ax.append(host_subplot(111, axes_class=AA.Axes))
        plt.subplots_adjust(right=0.75)
    else:
        ax.append(fig.add_subplot(111))
    if twoaxes or threeaxes:
        ax.append(ax[0].twinx())
    if threeaxes:
        ax.append(ax[0].twinx())
        offset = 60
        new_fixed_axis = ax[2].get_grid_helper().new_fixed_axis
        ax[2].axis["right"] = new_fixed_axis(loc="right", axes=ax[2],offset=(offset, 0))
        ax[2].axis["right"].toggle(all=True)   

我尝试用 3 种方法更改字体大小,但都失败了

1)

ax[i].set_xlabel(xlabel, fontsize = fontsize)

2)

fontd = {'family' : 'serif',
                 'color'  : 'darkred',
                 'weight' : 'normal',
                 'size'   : fontsize,
        }
        ax[i].yaxis.set_label_text(ylabel, fontdict=fontd)

和 3)

   ax[i].xaxis.get_label().set_fontsize(fontsize)

这些方法都不起作用,并且鉴于到目前为止所有示例都显示轴标签的字体非常小,我想这要么是古怪的困难,要么是不可能的。在这个阶段欢迎任何想法。

我忘了说当轴是用

创建的
  fig.add_subplot(111)

上面提到的所有方法都可以正常工作,并且字体大小已更改。

【问题讨论】:

    标签: matplotlib font-size host multiple-axes


    【解决方案1】:

    经过一番挖掘,我找到了答案。我使用下面更简单的示例并添加两行来满足我的要求。

    以下两行更改axisartist字体

        par2.axis["right"].label.set_fontsize(34)
        host.axis["bottom"].label.set_fontsize(34)
    

    这是完整的例子:

    from mpl_toolkits.axes_grid1 import host_subplot
    import mpl_toolkits.axisartist as AA
    import matplotlib.pyplot as plt
    
    if 1:
    
        host = host_subplot(111, axes_class=AA.Axes)
        plt.subplots_adjust(right=0.75)
    
        par1 = host.twinx()
        par2 = host.twinx()
    
        offset = 60
        new_fixed_axis = par2.get_grid_helper().new_fixed_axis
        par2.axis["right"] = new_fixed_axis(loc="right",
                                            axes=par2,
                                            offset=(offset, 0))
    
        par2.axis["right"].toggle(all=True)
    
    
    
        host.set_xlim(0, 2)
        host.set_ylim(0, 2)
    
        host.set_xlabel("Distance")
        host.set_ylabel("Density")
        par1.set_ylabel("Temperature")
        par2.set_ylabel("Velocity")
    
        p1, = host.plot([0, 1, 2], [0, 1, 2], label="Density")
        p2, = par1.plot([0, 1, 2], [0, 3, 2], label="Temperature")
        p3, = par2.plot([0, 1, 2], [50, 30, 15], label="Velocity")
    
        par1.set_ylim(0, 4)
        par2.set_ylim(1, 65)
    
        host.legend()
    
        host.axis["left"].label.set_color(p1.get_color())
    
        par1.axis["right"].label.set_color(p2.get_color())
        par2.axis["right"].label.set_color(p3.get_color())
        fontd = {'family' : 'serif',
                     'color'  : 'darkred',
                     'weight' : 'normal',
                     'size'   : 'large',
        }
    
        #This is the code that changes the font.  
        par2.axis["right"].label.set_fontsize(34)
        host.axis["bottom"].label.set_fontsize(34)
    
    
        plt.draw()
        plt.show()
    

    输出:

    【讨论】:

      猜你喜欢
      • 2015-12-21
      • 1970-01-01
      • 2022-09-28
      • 2016-04-25
      • 2019-11-18
      • 2014-02-19
      • 1970-01-01
      • 1970-01-01
      • 2016-11-11
      相关资源
      最近更新 更多