2016-04-28 13 views
0

私は2次元(numpy)の配列を持ち、最初の列をコマンドplt.plot(wp [:, 0])でプロットします。これは私が欲しいものを正確に示しており、x軸のラベル付け以外に変更したいことは何もありません。 x軸については、2番目の列の値が同じで、この領域のy番号を表示する領域を示すコマンドを探しています。 matplotlibを使ったx軸ラベリング

[x1,y1] 
[x2,y2] 
[x3,y2] 
[x4,y3] 
[x5,y3] 
[x6,y3] 
[x7,y4] 

uは私の例マトリックス中に見ることができるように

は、第2列のエントリは一意ではなく、代わりに、同じ値の「領域」が存在します。

編集:plt.xticksだから(TX、WPの[:]、[2]、回転= '垂直'):だからsmall matrices

Large matrices

小さい行列のない仕事だが大きいもののために本当に醜いです私の意見では、それぞれの数字がちょうど1回発生すれば十分でしょう。あなたはそれをする方法を知っていますか?

+0

  • するexamplesから変更されたときに、特定の値のため

印刷する内容をカスタマイズティック

  • の数をカスタマイズします目盛りのラベルは、 'plt.xticks(wp [:、0]、labels)'でカスタマイズできます。http://matplotlib.org/examples/ticks_an d_spines/ticklabels_demo_rotation.html – user3148185

  • +0

    これは実際には小さな行列では機能しますが、大きな行列では実際には悪く見えます – HighwayJohn

    答えて

    1

    あなたがする必要があります:

    import matplotlib.pyplot as plt 
    from matplotlib.ticker import FuncFormatter, MaxNLocator 
    fig = plt.figure() 
    ax = fig.add_subplot(111) 
    xs = range(100) 
    ys = range(100) 
    
    
    def format_fn(tick_val, tick_pos): 
        return '{0}'.format(int(tick_val))[:1] 
    
    ax.xaxis.set_major_formatter(FuncFormatter(format_fn)) 
    ax.xaxis.set_major_locator(MaxNLocator(nbins=6,integer=True)) 
    ax.plot(xs, ys) 
    plt.show() 
    
    +0

    結果は有望です。同じ値の領域が同じサイズの場合、これはうまくいくと思いますか? – HighwayJohn

    +0

    例を見ると、たくさんの点をプロットしていても(26)、それらのうちのいくつか(a、d、g、...)しかチェックしていないことがわかります。あなたの場合は、 –

    +0

    の前にビン(または "クラス")の数を計算する必要がありますが、私の値は同じ間隔の長さを持たないので、間隔の大きさを見ることが非常に重要です。 x-tickの最初の変更が表示されるのであれば、完璧です(例えば、0.1 ... 2 .... 3 ..... 4 ... 5.6) – HighwayJohn

    関連する問題