2

散布図を生成していますが、プロット上のグリッド線とテキストの重なりを避けることができるかどうか疑問に思っていました。

プロット例

たとえば、最初のポイントのテキストはグリッド線上にあるため、読みにくくなっています。

私のコードは以下の通りです:

for i, j in zip(path_loss_list,throughput_values):
    plt.annotate( "%s" %str(j), xy=(i,j), xytext=(-5, 5), ha='right', textcoords='offset points')
4

2 に答える 2

2

プロットされたポイントの真上にすべてのテキストを配置すれば、問題はないはずだと思います。たとえば、次のことを試してください。

    for i, j in zip(path_loss_list,throughput_values):
        plt.annotate( "%s" %str(j), xy=(i,j), xytext=(0, 5), ha='right', textcoords='offset points')

ただし、これにより、右側のポイントと一部重複する可能性があります。その場合は、変更できxytext = (0, 8). ます。すべてのポイントに対して一貫した解決策がない可能性があります。したがって、次のように、テキストの高さをポイントごとに指定する必要がある場合があります。

   for i, j in zip(path_loss_list,throughput_values):
       if not j> 59:
           plt.annotate( "%s" %str(j), xy=(i,j), xytext=(-5, 5), ha='right', textcoords='offset points')
       else:
          plt.annotate( "%s" %str(j), xy=(i,j), xytext=(0, 5), ha='right', textcoords='offset points')

これにより、一番上のポイントのテキストが移動します。y=54.615を推定できます。

于 2012-11-06T19:14:57.097 に答える
2

私がこれを正しく取得した場合、グリッド線をメモとポイントの下に配置する必要があります。これには を使用しますax.set_axisbelow(True)。ここで、ax はグリッド線を含む軸です。

http://matplotlib.org/api/axes_api.html?highlight=set_axisbelow#matplotlib.axes.Axes.set_axisbelow

スクリプトのパラメーターとして設定することもできるので、トレースするたびに変更する必要はありません。また、非常に単純です。matplotlib.rc('axes', axisbelow=True)

rcParams の詳細については、http://matplotlib.org/api/matplotlib_configuration_api.html#matplotlib.rc を確認してください。

パラメータのリストについてはhttp://matplotlib.org/users/customizing.html?highlight=rcparams

于 2012-12-06T16:42:44.010 に答える