严格来说,这不是半原始情节。我使用此代码获得对数y-axis
:
pyplot.gca().set_yscale('log')
编辑:好吧,也许我太过分了。我需要从x轴以45度角绘制直线。类似于图像中的线条,但实际上笔直且呈45度角。我还需要根据其y值移动任何x值。
在45度角绘制已知y值和未知x值的直线的公式是什么? (也许数学论坛会更合适?)
我的教育水平相当低,所以例如我不得不教会自己前几天的对数,因为我从未在学校里学过。所以我无法找到一种自己绘制直线的方法。
答案 0 :(得分:2)
好的,我要用迄今为止我想到的问题回答这个问题。
为了在semilog上绘制直线,有两种主要方法。如果你有一个x值列表,并希望得到相应的y值,它们将绘制一条直线,那么你只需在每个x值上调用numpy.exp()。
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时,您需要同时使用已知的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()在semilog上创建一条直线时,x值将偏离它所需的位置。因此,您需要找到值实际位置与应该位置之间的差异。无论您在哪个级别绘制数据,您都知道它应该在最低级别绘制的位置,因此您必须在最低级别找到差异,然后才能在较高级别应用它。
一旦你知道了“偏移”,你只需要补偿所有偏斜x值的差异。这些值乘以-30的原因是特定于应用程序的。此数字需要根据图的y限制和x限制进行更改。
根据情节,np.log(1000)中的“1000”可能也需要更改。这应该是skew-t图中的最低级别(最高y值)。
关键是,如果您知道应该在哪个温度上绘制数据,以及您想要绘制数据的级别,此功能将正确地扭曲该值(当针对您的特定情节调整-30时) 。
要查看该功能的实际应用,以下是在500级绘制温度为10的数据点的样子。
get_skewed_x(500, 10)
蓝点表示数据点的绘制位置。
可能有一个更优雅的解决方案,但这是我现在最好的。