1

ここに画像の説明を入力

これは、厳密に言えば、セミロジー プロットではありません。このコードを使用して対数を取得しましたy-axis

pyplot.gca().set_yscale('log')

編集:さて、多分私はそれを軽視しすぎています。x 軸から 45 度の角度で直線をプロットする必要があります。画像の線に似ていますが、実際には直線で 45 度の角度になっています。また、y 値のみに基づいて x 値をシフトする必要もあります。

既知の y 値と未知の x 値の直線を 45 度の角度でプロットする式は? (おそらく、数学フォーラムの方が適切でしょうか?)

私の教育レベルはかなり低いので、たとえば、学校で習ったことがなかったので、先日、対数とは何かを独学しなければなりませんでした。そのため、自分で直線をプロットする方法を見つけることができません。

4

1 に答える 1

2

さて、私がこれまでに把握したことで質問に答えます。

片対数に直線をプロットするには、主に 2 つの方法があります。x 値のリストがあり、直線をプロットする対応する y 値を取得したい場合は、numpy.exp()各 x 値を呼び出すだけです。

import matplotlib.pyplot as plt
import numpy as np

plt.gca().set_yscale('log')

x = np.arange(0, 51, 10)
y = np.exp(x)

plt.plot(x, y, 'k-')
plt.show()

ここにいくつかの証拠があります。

ここに画像の説明を入力

既知の y 値と未知の x 値を使用して直線をプロットする場合は、その逆を行います。

import matplotlib.pyplot as plt
import numpy as np

plt.gca().set_yscale('log')

y = np.arange(0, 1001, 100)
x = np.log(y)

plt.plot(x, y, 'k-')
plt.show()

これがより多くの証拠です。

ここに画像の説明を入力

さて、スキュー t のコンテキストでは、やるべきことがもっとあります。Skew-t を生成するときは、既知の y 値と既知の x 値の両方から作業する必要があります。温度 (x 値) とレベル (y 値) を取り、適切に歪んだ x 値を返す関数の例を次に示します。

def get_skewed_x(level, temp):
    base_log = (-30 * np.log(1000))
    top_log = (-30 * np.log(level))
    diff = base_log - temp
    x = top_log - diff
    return x

この関数は、データをプロットするレベルと温度値を受け入れます。

この関数はかなり複雑に見えますが、これは、y 値に対して np.log() を呼び出して片対数に直線を作成すると、x 値が必要な場所から大きくずれてしまうためです。したがって、値が実際にある場所とあるべき場所の違いを見つける必要があります。データをプロットするレベルに関係なく、最下位レベルでプロットする必要がある場所を知っているため、上位レベルに適用する前に最下位レベルで違いを見つける必要があります。

「オフセット」がわかったら、すべての歪んだ x 値の差を補正するだけです。これらの値が -30 倍される理由は、アプリケーション固有です。この数は、プロットの y 制限と x 制限に基づいて変更する必要があります。

np.log(1000)プロットによっては、「1000」も変更する必要がある場合があります。これは、skew-t プロットの最低レベル (最高の y 値) である必要があります。

ポイントは、データをプロットする温度とデータをプロットするレベルがわかっている場合、この関数は値を適切に歪めます (もちろん、特定のプロットに対して -30 が調整されている場合)。

関数の動作を確認するために、レベル 500 で温度 10 のデータ ポイントをプロットすると、次のようになります。

get_skewed_x(500, 10)

青い点は、データポイントがプロットされる場所を示しています。

おそらくもっとエレガントな解決策があるでしょうが、これは私が今持っている最高のものです。

ここに画像の説明を入力

于 2012-12-11T02:13:48.977 に答える