Python 沿图表上的X轴自由移动峰值的公式
我画了一张指数图,现在我想沿着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);
中心应该像一个钟,右边像我的当前图表,但完全颠倒。
我该怎么做
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))