4

matplotlib の対数スケールで y 値がゼロの点に接続線をプロットすることは可能ですか?

y 軸に対数スケールでプロットしたいデータがあります。一部のデータの y 値はゼロです。matplotlib がこれらのポイントを対数スケールでプロットすることはできないことを認識していますが、前のポイントまたは次のポイント (どちらかがゼロでない場合) から接続線を引くことを本当に望んでいます。

1 つの解決策は、単純にすべてのゼロを何らかの TINY 数値に置き換えることです。私はむしろこれをしたくない。

matplotlib が描画するもの: 接続線のない対数プロット

描きたいもの: 接続線付き対数プロット

4

2 に答える 2

3

symlog''の代わりにy軸の''オプションを使用してこれを解決しようとしていますlog。次に、linthreshy指定できる引数があります

「プロットが線形である範囲(プロットがゼロ付近で無限大になるのを避けるため)。」

実際、それはまさにこの種の問題であり、オプションが対処するように設計されているようです。対数目盛プロットの下部にこの奇妙な線形ゾーンがあると少し間抜けに見えるかもしれませんが、かなり小さくすることができます。

于 2012-04-18T22:01:37.893 に答える
0

現在の図から座標を引き出すことで、いつでもグラフの下部に追加のポイントを追加できます。

import numpy as np
import pylab as plt

# Create some sample data like yours
X = np.linspace(0,3,100)
Y = np.exp(-X)

def semilogy_to_bottom(X,Y):
    # Plot once to move axes and remove plot
    P, = plt.semilogy(X,Y)
    plt.gca().lines.remove(P)

    # Find the bottom of the graph
    y_min = plt.gca().get_ylim()[0]

    # Add a new point
    X2 = np.concatenate((X,[X[-1]]))
    Y2 = np.concatenate((Y,[y_min]))
    plt.semilogy(X2,Y2)

semilogy_to_bottom(X,Y)
plt.xlim(0,5)
plt.show()

ここに画像の説明を入力

于 2012-04-19T13:46:07.590 に答える