Python图-更改X轴比例和图阈值

时间:2018-06-21 15:07:56

标签: python python-3.x matplotlib plot axis

我想更改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.

1 个答案:

答案 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函数。