Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 沿图表上的X轴自由移动峰值的公式_Python_Math_Charts_Formula_Curve - Fatal编程技术网

Python 沿图表上的X轴自由移动峰值的公式

Python 沿图表上的X轴自由移动峰值的公式,python,math,charts,formula,curve,Python,Math,Charts,Formula,Curve,我画了一张指数图,现在我想沿着X轴自由移动峰值。 中心应该像一个钟,右边像我的当前图表,但完全颠倒。 我该怎么做 import matplotlib import math import numpy as np matplotlib.use('Agg') import matplotlib.pyplot as plt arr_name=[] arr_value=[] k=-0.01 for l in range(0,100): x=pow(k,2)*np.exp(-k*1.8);

我画了一张指数图,现在我想沿着X轴自由移动峰值。
中心应该像一个钟,右边像我的当前图表,但完全颠倒。
我该怎么做

import matplotlib
import math
import numpy as np
matplotlib.use('Agg')
import matplotlib.pyplot as plt

arr_name=[]
arr_value=[]
k=-0.01
for l in range(0,100):
    x=pow(k,2)*np.exp(-k*1.8);
    if (l%10)==0:
        arr_name.append(l/10)
    else:
        arr_name.append("")
    arr_value.append(x)
    k=k+0.05
    print x

y_pos = np.arange(len(arr_name))
plt.figure(figsize=(8,4))
plt.rcParams.update({'font.size': 8})
plt.subplot(1,1,1)
plt.plot(y_pos, arr_value, '-r')
plt.xticks(y_pos, arr_name)
plt.savefig('/var/www/html/bar/img/test_chart.png')

更新:
在图表中心绘制峰值的可能解决方案:

for l in range(0,100):
    x=pow(k,5)*np.exp(-k*1.96);
    if (l%10)==0:
        arr_name.append(l/10)
    else:
        arr_name.append("")
    arr_value.append(x)
    if l>50:
        k=k-0.05
    else:
        k=k+0.05
    print x
添加可逆性:

arr_value.reverse()

如果不使用四个循环,您可以更轻松地进行绘图。在指数内改变系数会移动峰值的值和位置

import matplotlib.pyplot as plt
import numpy as np

def f(x, s):
   x**2 * np.exp(-s*x)

x = np.linspace(0, 10, 100)
y1 = f(x, 1.8)
y2 = f(x, 0.8)

plt.plot(x, y1, label='s=1.8')
plt.plot(x, y2, label='s=0.8')
plt.legend()
plt.show()

(我假设顶点指的是峰值,比例指的是轴。)最大值的位置当然取决于
exp
中的1.8因素。您的解决方案看起来不错!现在,峰值可以沿Y轴移动。是否可以沿X轴移动峰值?您可以使用移位参数定义一个新函数<代码>定义f(x,s,x0):返回(x-x0)**2*np.exp(-s*(x-x0))