2

何をしているように見えても、過去の質問を調べても、目盛りラベルの単純なプロパティを変更できないようです。

このコード:

from mpl_toolkits.axes_grid.axislines import SubplotZero
from matplotlib.transforms import BlendedGenericTransform
import matplotlib.pyplot as plt
import numpy

if 1:
    fig = plt.figure(1)
    ax = SubplotZero(fig, 111)
    fig.add_subplot(ax)

    # thicken the axis lines
    ax.axhline(linewidth=1.7, color="k")
    ax.axvline(linewidth=1.7, color="k")

    plt.xticks([-numpy.pi/2, -numpy.pi/4, 0, numpy.pi/4, numpy.pi/2], [r'$-\pi$', r'$-\pi/2$', r'$O$', r'$\pi/2$', r'$\pi$'], rotation=30)
    plt.yticks([])
    #ax.set_xticklabels([r'$-\pi$', r'$-\pi/2$', r'$0$', r'$\pi/2$', r'$\pi$'], rotation=40, ha='left')

    # end-of-axis arrows
    ax.text(0, 1.05, r'$y$', transform=BlendedGenericTransform(ax.transData, ax.transAxes), ha='center')
    ax.text(1.03, 0, r'$x$', transform=BlendedGenericTransform(ax.transAxes, ax.transData), va='center')

    plt.ylim(-5, 5)
    plt.xlim(-numpy.pi/2, numpy.pi/2)
    x_width = (abs(plt.xlim()[0]) + abs(plt.xlim()[1])) / 2
    y_width = (abs(plt.ylim()[0]) + abs(plt.ylim()[1])) / 2

    # end-of-axis arrows
    plt.arrow(plt.xlim()[1], -0.003, x_width*0.01, 0,
              width=x_width*0.0015, color="k", clip_on=False,
              head_width=y_width*0.24/7, head_length=x_width*0.024)
    plt.arrow(0.003, plt.ylim()[1], 0, y_width*0.01,
              width=y_width*0.0015, color="k", clip_on=False,
              head_width=x_width*0.24/7, head_length=y_width*0.024)

    for direction in ["xzero", "yzero"]:
        ax.axis[direction].set_visible(True)

    for direction in ["left", "right", "bottom", "top"]:
        ax.axis[direction].set_visible(False)

    x = numpy.linspace(-numpy.pi/2, numpy.pi/2, 2500)

    yy = numpy.tan(2*(x - numpy.pi/2))
    threshold = 1000
    yy[yy > threshold] = numpy.inf
    yy[yy < -threshold] = numpy.inf

    ax.plot(x, yy, linewidth=1.2, color="black")
    ax.axvline(x=-3*numpy.pi/4, linewidth=1.0, color="k", linestyle="--")
    ax.axvline(x=-numpy.pi/4, linewidth=1.0, color="k", linestyle="--")
    ax.axvline(x=numpy.pi/4, linewidth=1.0, color="k", linestyle="--")
    ax.axvline(x=3*numpy.pi/4, linewidth=1.0, color="k", linestyle="--")

    plt.savefig('MC6.png')

この行に特に注意してください:

        plt.xticks([-numpy.pi/2, -numpy.pi/4, 0, numpy.pi/4, numpy.pi/2], [r'$-\pi$', r'$-\pi/2$', r'$O$', r'$\pi/2$', r'$\pi$'], rotation=30)

ラベルを 30 度回転しません。同様に、他の回避策を講じてフォント サイズを変更しても、ラベルは常に同じままです。

私はmatplotlibについて非常に単純なものを見逃していますか???

4

1 に答える 1

4

次の行を追加します。

ax.axis["xzero"].major_ticklabels.set_rotation(30) 

参考までに、これが由来するメーリング リストの項目を次に示します

あなたが何をしても効果がない理由については、推測するしかありません。ワイルドな推測は、ステート マシン (pyplot 名前空間から関数を呼び出すときに内部で動作する) が、plt.xticks明示的に非表示に設定した下部スパインに関連していると想定していることです。

于 2013-07-17T11:53:51.760 に答える