1

在此处输入图像描述

严格来说,这不是一个符号学情节。我用这段代码得到一个对数y-axis

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

编辑:好吧,也许我把它弄得太傻了。我需要从 x 轴以 45 度角绘制直线。类似于图像中的线,但实际上是直的并且呈 45 度角。我还需要仅根据其 y 值来移动任何 x 值。

以 45 度角为已知 y 值和未知 x 值绘制直线的公式是什么?(也许数学论坛更合适?)

我的教育水平很低,所以前几天我不得不自学对数是什么,因为我从来没有在学校学过。所以我无法自己找到一种绘制直线的方法。

4

1 回答 1

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()

这里有更多证据。

在此处输入图像描述

现在,在 skew-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 限制进行更改。

中的“1000”np.log(1000)也可能需要根据情节进行更改。这应该是 skew-t 图上的最低水平(最高 y 值)。

关键是,如果你知道数据应该绘制在什么温度上,以及你想绘制数据的水平,这个函数将正确地扭曲值(当然,当 -30 为你的特定绘图调整时)。

为了查看函数的实际作用,下面是在 500 级绘制温度为 10 的数据点的样子。

get_skewed_x(500, 10)

蓝点显示将绘制数据点的位置。

可能有一个更优雅的解决方案,但这是我现在最好的。

在此处输入图像描述

于 2012-12-11T02:13:48.977 回答