我想更改x axis
比例。例如,我正在从txt文件读取数据。
此数据就像a=[ 1,2,5,9,12,17]
,我想将此比例转换为该数字[0,3]。我的意思是这个数据a=[ 1,2,5,9,12,17]
有6个数字,但是我需要在[0,3]中缩放这些数字,以便我的轴只能是c=[0,3]
。我还有其他数据c = [1,2,3 ,4,5,6]。我以常规方式plot(a,b)
绘制此数据,但我想像plot(c,b)
那样缩放。我不知道该用哪个功能。
其他问题,我使用了plt.axhline(y=0.005)
,我想使用linestyle ='-'进行更改,因为否则将继续显示行。如何将最大和最小阈值放在'-'之间?
Second question answer:
import matplotlib.pyplot as plt
plt.axhline(y=0.5, color='b', linestyle='--',linewidth=1)
plt.axhline(y=-0.5, color='b', linestyle='--',linewidth=1)
plt.show()` I solved my second question like this.
答案 0 :(得分:1)
如果有NumPy,则可以使用interp
函数来生成缩放值(docs):
import numpy as np
scaled_a = np.interp(a, (min(a), max(a)), c)
scaled_a
变量是一个NumPy数组,可以代替原始plot
变量传递给matplotlib的a
函数。
如果NumPy不可用,则必须做一些算术才能计算出新值:
def scaler(x, old_min, old_max, new_min, new_max):
old_diff = old_max - old_min
new_diff = new_max - new_min
return ((x - old_min) * (new_diff / old_diff)) + new_min
old_min = min(a)
old_max = max(a)
scaled_a = [scaler(x, old_min, old_max, c[0], c[1]) for x in a]
变量scaled_a
现在是一个python列表,但仍可以传递给plot
函数。