使⽤Python的matplotlib画折线图,柱状图,三维图
"""
#Python中matplotlib中画图⼯具
#姓名:pcb
#时间:2018.12.20
"""
#引⼊画图所需要的库⽂件
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from matplotlib.ticker import MultipleLocator
from mpl_toolkits.mplot3d import Axes3D
"""
画折现图
"""
# input_values=[1,2,3,4,5]
# squares=[1,4,9,16,25]
#
# plt.plot(input_values,squares,linewidth=5)      #设置线宽
# plt.title("Square Number",fontsize=24)          #设置图题
# plt.xlabel("Value",fontsize=14)                #设置x轴的标签以及标签的⼤⼩
# plt.ylabel("Square of value",fontsize=14)      #设置y轴的标签以及标签的⼤⼩
# plt.tick_params(axis="both",labelsize=14)      #设置刻度标记的⼤⼩
#
# plt.show()
"""
绘制散点图
"""
# plt.scatter(2,4,s=200)
# plt.title("Square Number",fontsize=24)          #设置图题
# plt.xlabel("Value",fontsize=14)                #设置x轴的标签以及标签的⼤⼩
# plt.ylabel("Square of value",fontsize=14)      #设置y轴的标签以及标签的⼤⼩
# plt.tick_params(axis="both",which="major",labelsize=14) #设置刻度标记的⼤⼩
# plt.show()
"""
创建窗⼝⼦图
设置⼦图基本元素
"""
# x=np.arange(-5,5,0.1)
# y=x*3
# fig=plt.figure(num=1,figsize=(15,8),dpi=80)    #开启⼀个窗⼝,同时设置⼤⼩分辨率,参数:窗⼝个数,窗⼝⼤⼩,分辨率
# ax1=fig.add_subplot(2,1,1)                    #使⽤fig添加⼦图,参数:⾏数、列数、第⼏个
# ax2=fig.add_subplot(2,1,2)                    #使⽤fig添加⼦图,参数:⾏数、列数、第⼏个
#
# >设置⼦图窗⼝
# ax1.set_title("python_drawing",fontsize=12)    #设置图题以及字体⼤⼩
# ax1.set_xlabel("x_name",fontsize=12)          #设置x轴的字体⼤⼩
# ax1.set_ylabel("y_name",fontsize=12)          #设置y轴的字体⼤⼩
# plt.axis([-6,6,-10,10])                        #设置横纵坐标范围,这个⼦图中被分为⼀下两个函数
# ax1.set_xlim(-5,5)                            #设置横轴范围,单独给图1设置x轴的范围
# ax1.set_ylim(-10,10)                          #设置纵轴范围,单独给图1设置y轴的范围
# xmajorLocator = MultipleLocator(2)            #定义横向主刻度标签的刻度差为2的倍数。就是隔⼏个刻度才显⽰⼀个标签⽂本
# ymajorLocator = MultipleLocator(3)            #定义纵向主刻度标签的刻度差为3的倍数。就是隔⼏个刻度才显⽰⼀个标签⽂本
# ax1.xaxis.set_major_locator(xmajorLocator)    #应⽤定义的横向主刻度格式
# ax1.yaxis.set_major_locator(ymajorLocator)    #应⽤定义的纵向主刻度格式
# id(True,which="major")            #x坐标轴⽹格使⽤主刻度格式
# id(True,which="major")            #y坐标轴⽹格使⽤主刻度格式
# ax1.set_xticks([])                            #去除坐标刻度
# ax1.set_xticks((-5,-3,-1,1,3,5))              #设置坐标刻度
# ax1.set_xticks((-5,-3,-1,1,3,5))              #设置坐标刻度
#
# #设置刻度的显⽰⽂本,rotation旋转⾓度(>0顺时针旋转、<0逆时针旋转),fontsize字体⼤⼩
# #ax1.set_xticklabels(labels=['x1','x2','x3','x4','x5'],rotation=-30,fontsize='small')
#
# #标志marker为设置线的格式,具体标志如下所⽰:
# """
# o’                圆圈
# ‘.’                点
# ‘D’                菱形
# ‘s’                正⽅形
# ‘h’                六边形1
# ‘*’                星号
# ‘H’                六边形2
# ‘d’                ⼩菱形
# ‘_’                ⽔平线
# ‘v’                ⼀⾓朝下的三⾓形
# ‘8’                ⼋边形
# ‘<’                ⼀⾓朝左的三⾓形
# ‘p’                五边形
# ‘>’                ⼀⾓朝右的三⾓形
# ‘,’                像素
# ‘^’                ⼀⾓朝上的三⾓形
# ‘+’                加号
# ‘\  ‘              竖线
# ‘None’,’’,’ ‘      ⽆
# ‘x’                X
#
# """
# #标志color为颜⾊,具体标志如下所⽰
# """
# b              蓝⾊
# g              绿⾊
# r              红⾊
# y              黄⾊
# c              青⾊
# k              ⿊⾊
# m              洋红⾊
# w              ⽩⾊
#
# """
#
# plot1=ax1.plot(x,y,marker='o',color='g',label='legend1')
#
#
# # #线图:linestyle线性,alpha透明度,color颜⾊,label图例⽂本
# plot2=ax1.plot(x,y,linestyle='--',alpha=0.5,color='r',label='legend2')
#
# ax1.legend(loc='upper left')                    #显⽰图例,plt.legend()
# (2.8, 7, r'y=3*x')                      #指定位置显⽰⽂字,()
# #
# # #添加标注,参数:注释⽂本、指向点、⽂字位置、箭头属性
# ax1.annotate('important point', xy=(2, 6), xytext=(3, 1.5), arrowprops=dict(facecolor='black', shrink=0.05))
# #
# #显⽰⽹格。which参数的值为major(只绘制⼤刻度)、minor(只绘制⼩刻度)、both,默认值为major。axis为'x','y','both' # id(b=True,which='major',axis='both',alpha= 0.5,color='skyblue',linestyle='--',linewidth=2)
#
# # # 在当前窗⼝添加⼀个⼦图,rect=[左, 下, 宽, ⾼],是使⽤的绝对布局,不和以存在窗⼝挤占空间
# axes1 = plt.axes([.2, .3, .1, .1], facecolor='y')
# #
# # # 在⼦图上画图
# axes1.plot(x,y)
#
# #savefig保存图⽚,dpi分辨率,bbox_inches⼦图周边⽩⾊空间的⼤⼩
# plt.savefig('aa.png',dpi=400,bbox_inches='tight')
#
#
# #打开窗⼝,对于⽅法1创建在窗⼝⼀定绘制,对于⽅法2⽅法3创建的窗⼝,若坐标系全部空⽩,则不绘制
# plt.show()
"""
极坐标图
"""
# fig=plt.figure(2)                                    #新开启⼀个窗⼝
# ax1=fig.add_subplot(1,2,1,polar=True)                #启动⼀个窗⼝的极坐标⼦图
# theta=np.arange(0,2*np.pi,0.02)                      #⾓度数列值
# ax1.plot(theta,s_like(theta),lw=2)            #画图,参数:⾓度,半径,线宽
# ax1.plot(theta,theta/6,line,lw=2)          #画图,参数:⾓度,半径,linestyle样式,lw线宽
#
# ax2=fig.add_subplot(1,2,2,polar=True)                #启动⼀个极坐标⼦图
# ax2.plot(s(5*theta),line,lw=2)
# ax2.plot(theta,s(4*theta),lw=2)
# ax2.set_rgrids(np.arange(0.2,0.2,0.2),angle=45)      #距离⽹格轴,轴线刻度和显⽰位置
# ax2.set_thetagrids([0,45,90])                        #⾓度⽹格轴,范围0-360度
# plt.savefig('11.png',dpi=400,bbox_inches='tight')
# plt.show()
"""
柱状图
"""
# plt.figure(3)
# x_index=np.arange(5)                        #柱的索引
# x_data=("A","B","C","D","E")
# y1_data=(20,35,30,35,27)
# y2_data=(25,32,34,20,25)
# bar_width=0.35                              #定义⼀个数字代表柱的宽度
# rects1 = plt.bar(x_index, y1_data, width=bar_width,alpha=0.4, color='b',label='legend1')  #参数:左偏移、⾼度、柱宽、透明度、颜⾊、图例
# rects2 = plt.bar(x_index + bar_width, y2_data, width=bar_width,alpha=0.5,color='r',label='legend2') #参数:左偏移、⾼度、柱宽、透明度、颜⾊、图例
#
# #关于左偏移,不⽤关⼼每根柱的中⼼不中⼼,因为只要把刻度线设置在柱的中间就可以了
# icks(x_index + bar_width/2, x_data)  #x轴刻度线
# plt.legend()    #显⽰图例
# plt.tight_layout()  #⾃动控制图像外部边缘,此⽅法不能够很好的控制图像间的间隔
# plt.savefig('11.png',dpi=400,bbox_inches='tight')
# plt.show()
"""
直⽅图
"""
# fig,(ax0,ax1) = plt.subplots(nrows=2,figsize=(9,6))    #在窗⼝上添加2个⼦图
# sigma = 1  #标准差
# mean = 0    #均值
# x=mean+sigma*np.random.randn(10000)  #正态分布随机数
# ax0.hist(x,bins=20,density=False,histtype='bar',facecolor='yellowgreen',alpha=0.75,rwidth=0.8)  #normed是否归⼀化,histtype直⽅图类型,facecolor颜⾊,alpha透明度
# ax1.hist(x,bins=20,density=False,histtype='bar',facecolor='pink',alpha=0.75,cumulative=False,rwidth=0.8) #bins柱⼦的个数,cumulative是否计算累加分布,rwidth柱⼦宽度
# plt.savefig('12.png',dpi=400,bbox_inches='tight')
# plt.show()  #所有窗⼝运⾏
"""
散点图
"""
# fig = plt.figure(4)          #添加⼀个窗⼝
# ax =fig.add_subplot(1,1,1)  #在窗⼝上添加⼀个⼦图
# x=np.random.random(100)      #产⽣随机数组
# y=np.random.random(100)      #产⽣随机数组
# ax.scatter(x,y,c='y',alpha=0.5,facecolors='none')  #x横坐标,y纵坐标,s图像⼤⼩,c颜⾊,marker图⽚,lw图像边框宽度
# plt.show()  #所有窗⼝运⾏
"""
三维图
"""
matplotlib中subplot# fig = plt.figure(5)
# ax=fig.add_subplot(1,1,1,projection='3d')    #绘制三维图
#
# x,id[-2:2:20j,-2:2:20j]  #获取x轴数据,y轴数据
# z=p(-x**2-y**2)  #获取z轴数据
#
# ax.plot_surface(x,y,z,rstride=2,cstride=1,lwarm,alpha=0.8)  #绘制三维图表⾯
# ax.set_xlabel('x-name')    #x轴名称
# ax.set_ylabel('y-name')    #y轴名称
# ax.set_zlabel('z-name')    #z轴名称
# plt.savefig('12.png',dpi=400,bbox_inches='tight')
# plt.show()
"""
画矩形,多边形、圆和椭圆
"""
# fig = plt.figure(6)  #创建⼀个窗⼝
# ax=fig.add_subplot(1,1,1)  #添加⼀个⼦图
# rect1 = plt.Rectangle((0.1,0.2),0.2,0.3,color='r')  #创建⼀个矩形,参数:(x,y),width,height
# circ1 = plt.Circle((0.7,0.2),0.15,color='r',alpha=0.3)  #创建⼀个椭圆,参数:中⼼点,半径,默认这
个圆形会跟随窗⼝⼤⼩进⾏长宽压缩# pgon1 = plt.Polygon([[0.45,0.45],[0.65,0.6],[0.2,0.6]])  #创建⼀个多边形,参数:每个顶点坐标
#
# ax.add_patch(rect1)  #将形状添加到⼦图上
# ax.add_patch(circ1)  #将形状添加到⼦图上
# ax.add_patch(pgon1)  #将形状添加到⼦图上
# plt.savefig('13.png',dpi=400,bbox_inches='tight')
# fig.canvas.draw()  #⼦图绘制
# plt.show()
画图结果如下:
柱状图
三维图

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论