300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > python使用matplotlib画折线图(详细)

python使用matplotlib画折线图(详细)

时间:2019-07-31 22:05:15

相关推荐

python使用matplotlib画折线图(详细)

#numpy,matplotlib,pandas为数据分析三剑客。import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom matplotlib.ticker import MultipleLocator#使用numpy产生数据x = np.arange(-5, 5 , 0.1)'''np.arange()函数返回一个有终点和起点的固定步长的数列,里面可以设置1-3个参数,依次是起点数,步长和终点数。一个参数时,参数值为终点,起点取默认值0,步长取默认值1。两个参数时,第一个参数为起点,第二个参数为终点,步长取默认值1。三个参数时,第一个参数为起点,第二个参数为终点,第三个参数为步长。其中步长支持小数。'''y = x*3#创建窗口和子图#方法一:先创建窗口,再创建子图(空白处绘制,子图填满窗口)fig = plt.figure(num = 1, figsize=(15, 8), dpi=80) #开启一个窗口,设置宽高和dpi。'''figure()函数说明figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)num:图像编号或名称,数字为编号 ,字符串为名称figsize:指定figure的宽和高,单位为英寸;dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值(默认值)为80。1英寸等于2.5cm,A4纸是 21*30cm的纸张 facecolor:背景颜色edgecolor:边框颜色frameon:是否显示边框'''ax1 = fig.add_subplot(1,1,1) #参数之间的,可以省略。#通过add_subplot()函数添加子图,三个参数依次表示:窗口中子图的总行数、总列数,本子图为从左往右从上往下第几块区域。'''ax2 = fig.add_subplot(2,1,2)print(fig, ax1, ax2) #打印窗口和子图参数'''#设置子图的基本元素ax1.set_title('python_drawing') #设置标题ax1.set_xlabel('x_name') #设置X轴名称ax1.set_ylabel('y_name') #设置Y轴名称plt.axis([-5,5,-16,16]) #设置横、纵坐标的范围'''#上面axis()函数的结果可以通过以下两个函数分解实现ax1.set_xlim(-6,6)ax1.set_ylim(-10,10)'''#定义横、纵向主刻度标签的刻度差,就是隔几个刻度才显示一个标签文本。xmajorLocator = MultipleLocator(2)ymajorLocator = MultipleLocator(2)#X轴、Y轴应用定义的横、纵向主刻度,如果不应用将采用默认刻度。ax1.xaxis.set_major_locator(xmajorLocator)ax1.yaxis.set_major_locator(ymajorLocator)#X轴、Y轴的网格应用定义的横、纵向主刻度。ax1.xaxis.grid(True, which='major') #两个参数,为Flase时不显示网格,括号为空为默认值(显示网格,采用主刻度)。ax1.yaxis.grid(True, which='major')'''#删除X轴、Y轴刻度ax1.set_xticks([])ax1.set_yticks([])# 自由设置X轴、Y轴刻度ax1.set_xticks([-5,-2,-1,1,3,5])ax1.set_yticks([-1,-3,-7,-9])''''''#设置刻度的显示文本,设置刻度时前后要各多一个,rotation旋转角度,fontsize字体大小(small/medium/large)ax1.set_xticklabels(labels=['x0', 'x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8'], rotation = -45, fontsize = 'small')ax1.set_yticklabels(labels=['y1', 'y2'], rotation = 0, fontsize = 'medium')'''#设置线条参数plot1 = ax1.plot(x,y, linestyle='',marker = 's',color='g',label = 'legend8',alpha=0.5,linewidth=2)#alpha透明度,label为图例中线条名称,linewidth线条宽度。'''plt.plot()函数说明:一、plt.plot(x,y,format_string,**kwargs)x,y:x轴数据,y轴数据format_string:控制曲线的格式字串,有线条风格、线条标记、线条颜色三部分。线条风格,linestyle(或ls)=’-’ 当参数为空时是点图线条标记,marker = ‘o’ 线条颜色,color=’g’以上三个参数的可选值线条风格(linestyle)‘-‘实线 ‘:’虚线 ‘–’破折线 ‘None’ ’’什么都不画 ‘-.’ 点划线线条标记(marker)‘.’ 点‘D’ 菱形 ‘s’ 正方形‘h’ 六边形1 ‘*’ 星号‘H’ 六边形2 ‘d’ 小菱形‘_’ 水平线 ‘v’ 一角朝下的三角形‘8’ 八边形 ‘<’ 一角朝左的三角形‘p’ 五边形 ‘>’ 一角朝右的三角形‘,’ 像素 ‘^’ 一角朝上的三角形‘+’ 加号 ‘\ ‘竖线‘None’,’’ 无 ‘x’ X线条颜色(color)b蓝色 g绿色r红色 y黄色c青色k黑色 m洋红色 w白色关于*kwargs:有时候,函数的参数里会有(*args, **kwargs),都是可变参数,*args表示无名参数,是一个元组**kwargs是键值参数,相当于一个字典比如你输入参数为:(1,2,3,4,k,a=1,b=2,c=3),*args=(1,2,3,4,k),**kwargs={'a':'1,'b':2,'c':3}如果同时使用这两个参数,*args要在**kwargs之前本例子中,linestyle='',marker = 's',color='g', alpha=0.5,linewidth=2等键值对都是**kwargs'''#添加数字标签for a,b in zip(x,y):plt.text(a, b+0.05, '%.0f' % b, ha='center', va= 'bottom',fontsize=12)'''首先,前边设置的x、y值其实就代表了不同柱子在图形中的位置(坐标),通过for循环找到每一个x、y值的相应坐标——a、b,再使用plt.text在对应位置添文字说明来生成相应的数字标签,而for循环也保证了每一个点都有标签。其中,a, b+0.05表示在每一点对应x值、y值上方0.05处标注文字说明,'%.0f' % b,代表标注的文字,即每个柱子对应的y值, ha='center', va= 'bottom'代表horizontalalignment(水平对齐)、verticalalignment(垂直对齐)的方式,fontsize则是文字大小。'''#设置图例参数ax1.legend(loc='best', title='legend',fontsize='medium', frameon=True, edgecolor='blue', facecolor='blue')'''plt.legend()函数说明:位置:loc (可选参数 best, upper, right, upper left, lower left, lower right, right, center left,center right, lower center, upper center, center)图例标题:title图例字体大小:fontsize (可选参数:xx-small, x-small, small, medium, large, x-large, xx-large)图例边框:frameon (可选参数:True,Flase)图例边框颜色:edgecolor图例背景颜色:facecolor位置:loc,可选一下参数'''#指定位置显示文字ax1.text(2.8, 7, r'y=x*3')#添加注解ax1.annotate('important point', xy=(2,6), xytext=(3,1.5), arrowprops = dict(facecolor = 'black', shrink=0.05))#设置网格参数ax1.grid(b=True, which='major', axis='both', alpha=0.5, color='skyblue', linestyle='--', linewidth=2 )'''#在当前窗口添加一个子图axes1 = plt.axes([.2,.3,.1,.1], facecolor='y') #四个参数的话,前两个指的是相对于坐标原点的位置,后两个指的是坐标轴的长/宽度axes1.plot(x,y)'''#保存图片plt.savefig('test.jpg', dpi=100, bbox_inches='tight')plt.show() #显示窗口和子图

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。