python plot函数,python图形化编程软件
大家好,如果您还对python plot函数不太了解,没有关系,今天就由本站为大家分享python plot函数的知识,包括python图形化编程软件的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
用Python画出一组样本的经验分布函数
要使用Python绘制一组样本的经验分布函数(ECDF),可以按照以下步骤进行。经验分布函数是样本中不大于给定值的观测值所占的比例,能够直观展示样本数据的分布情况。
1.导入必要的库首先,需要导入numpy和matplotlib.pyplot库,分别用于数据处理和绘图。
import numpy as npimport matplotlib.pyplot as plt2.准备样本数据假设有一组排序好的样本数据data。如果数据未排序,需要先进行排序。
data= np.array([1, 2, 2, 3, 4, 4, 4, 5, 6])#示例数据(已排序)3.绘制经验分布函数经验分布函数的绘制步骤如下:
初始化起始点为样本最小值,ECDF初始值为0。遍历样本数据,对于每个数据点,绘制水平线(保持ECDF值不变)和垂直线(ECDF值增加)。确保重复值正确处理(即相同值的ECDF保持不变)。plt.figure(figsize=(6, 4))last, i= min(data)- 1, 0#起始点略小于最小值,确保从0开始n= len(data)while i<= n: if i== 0: current_x= min(data)- 1#起始点 current_y= 0 elif i== n: current_x= max(data)+ 1#结束点 current_y= 1 else: current_x= data[i- 1] current_y= i/ n#绘制垂直线(如果x变化) if i> 0 and(i== n or data[i- 1]!= data[i]): plt.plot([last, current_x], [current_y, current_y],'k')#绘制水平线(如果y变化) if i< n: next_x= data[i] if i< n else max(data)+ 1 next_y=(i+ 1)/ n if i< n else 1 if i== 0 or data[i- 1]!= data[i]: plt.plot([current_x, current_x], [current_y, next_y],'k') last= current_x i+= 1plt.xlabel('t')plt.ylabel('ECDF(t)')plt.title('经验分布函数(ECDF)')plt.grid(True)plt.show()4.优化代码(简洁版)以下是更简洁的实现方式,直接利用样本的排序特性:
plt.figure(figsize=(6, 4))sorted_data= np.sort(data)#确保数据已排序y= np.arange(1, len(data)+ 1)/ len(data)#绘制阶梯图plt.step(sorted_data, y, where='post', color='k')plt.xlabel('t')plt.ylabel('ECDF(t)')plt.title('经验分布函数(ECDF)')plt.grid(True)plt.show()关键点说明重复值处理:经验分布函数在重复值处保持水平线,直到最后一个重复值后才上升。阶梯图:使用plt.step的where='post'参数可以自动处理重复值,生成正确的阶梯状ECDF。起始和结束点:通过扩展x轴范围(如min(data)-1到max(data)+1),使图形更完整。示例输出
总结排序数据:确保样本数据已排序。计算ECDF值:每个数据点的ECDF值为其排名除以样本量。绘制阶梯图:使用plt.step或手动绘制水平和垂直线,正确处理重复值。这种方法能够准确反映样本数据的分布特征,适用于统计分析中的可视化需求。
python matplotlib数据作图
1、使用numpy生成一个长度为100的等差数列作为自变量,命名为x,分别使用三角函数sinx和cosx**2生成2个因变量,命名为y和z。
2、设置画布的尺寸大小和图形颜色、线条宽度、线条类型、图形标签等。
3、通过plt.figure(figsize=(10,6))设计一个10*6的画布。
4、尝试plt.plot(x,y,color='red',linewidth=2,label='$\sinx$')和plt.plot(x,z,'b--',label='$\cosx^2$')。
5、分别通过plt.xlabel('T')和plt.ylabel('V')设置X和Y轴的轴标签;通过plt.title('V changes by T')为图形设置标题。
6、y[:,0]=y[:,0]*888表示修改第一个数据,扩大888倍;后面沿用上面设置不变,发现另一条线几乎成为一条直线。
Python 画图存储(savefig)
建议你用面向对象的方式去画图,一个图作为一个对象,这样每次调用一个对象的保存图片方法就可以只保存当前图片。
你这种用法第三张图会有三个子图是因为三个子图都画在同一个对象上。
为了将面向对象的绘图库包装成只使用函数的调用接口,pyplot模块的内部保存了当前图表以及当前子图等信息。当前的图表和子图可以使用gcf()和gca()获得,它们分别是“GetCurrentFigure”和“GetCurrentAxis”的开头字母缩写。gcf()获得的是表示图表的Figure对象,而gca()则获得的是表示子图的Axes对象。下面我们在IPython中运行上节的“matplotlib_simple_plot.py”程序,然后调用gcf()和gca()查看当前的Figure和Axes对象。
给你个例子
importnumpyasnp
importmatplotlib.pyplotasplt
plt.figure(1)#创建图表1
plt.figure(2)#创建图表2
ax1=plt.subplot(211)#在图表2中创建子图1
ax2=plt.subplot(212)#在图表2中创建子图2
x=np.linspace(0,3,100)
foriinxrange(5):
plt.figure(1)❶#选择图表1
plt.plot(x,np.exp(i*x/3))
plt.sca(ax1)❷#选择图表2的子图1
plt.plot(x,np.sin(i*x))
plt.sca(ax2)#选择图表2的子图2
plt.plot(x,np.cos(i*x))
plt.show()
好了,文章到这里就结束啦,如果本次分享的python plot函数和python图形化编程软件问题对您有所帮助,还望关注下本站哦!