matplotlib几种画图的常用方法

Matplotlib是一个Python 2D绘图库,可以生成各种硬拷贝格式和跨平台交互式环境的出版物质量数据。Matplotlib可用于Python脚本,Python和IPython shell,Jupyter笔记本,Web应用程序服务器和四个图形用户界面工具包。

话不多少,直接上干货,跟大家分享下我使用matplotlib绘制一些图形的方法:

#导入模块
import matplotlib.pyplot as plt
import random
import matplotlib
import numpy as np

# #传入x,y通过plot方法实现画图
# plt.plot([1,0,9],[4,5,6])
# #在执行程序的时候展示图形
# plt.show()

#折线图的绘制

'''折线图的绘制'''
# x = range(1,8) #x轴位置
# y = [17,17,18,11,15,11,113] #y轴位置
# plt.plot(x,y)
# plt.show()


'''折线的颜色和形状的设置'''

# x = range(1,8) #x轴的位置
# y = [17,17,18,11,15,11,113] # y轴的位置
#
# #基础属性设置,color为颜色,alpha为折现透明度(0-1),linestyle代表折线样式,linewidth为折线的宽度设置。
# plt.plot(x,y,color = 'red',alpha = 0.5,linestyle = ':',linewidth = 3)
# plt.show()


'''折点样式设置'''

# x = range(1,8) #设置x轴位置
# y = [17,17,18,11,15,11,113]
# plt.plot(x,y,marker = '|') #传入x,y值,marker代表折现点,在这里设置为折现点为‘o’
# plt.show()#展示图形

'''设置的图片的大小与保存'''

# x = range(2,26,2)#设置x轴位置
#
# y = [random.randint(15,30) for i in x] #设置y轴,这里用到了一个列表生成式的方法。
#
# plt.figure(figsize=(20,8),dpi=80)#设置画布大小,figsize代表画布的宽和高,dpi代表分辨率,缺省值为80
#
# plt.plot(x,y)#传入x,y
# plt.show()#展示图形
#
# plt.savefig('./t1.png') #保存绘制的图形,并命名为t1.png


'''绘制x轴和y轴的刻度'''

# x = range(2,26,2) #x轴位置
# y = [random.randint(15,30) for i in x ] #y轴位置
# plt.figure(figsize=(20,8),dpi = 80)#画布大小为20,8、分辨率为80
#
# #设置x轴刻度
# #plt.xticks(x)
# #plt.xticks(range(1,25))
# #plt.show()
#
# #设置y轴刻度(2种方法,直接传y值进去或者使用range生成
# plt.yticks(y)
# #plt.yticks(range(min(y),max(y)+1))
# #plt.show()
#
# #构造x轴刻度标签
# x_ticks_label = ["{}:00".format(i) for i in x]
# #rotation=45:设置字体倾斜45度
# plt.xticks(x,x_ticks_label,rotation = 45)
# #构造y轴刻度标签
# y_ticks_label = ["{}℃".format(i) for i in range(min(y),max(y)+1)]
# plt.yticks(range(min(y),max(y)+1,),y_ticks_label)
#
# plt.plot(x,y)
# plt.show()

'''设置中文显示'''

#matplotlib只显示英文,无法显示中文,要使用中文的话需要修改matplotlib的默认字体
#此时修改matplotlib默认字体的话可以使用font_manager修改

# #以2个小时每分钟心脏跳动变化

# x = range(0,120)
# y = [random.randint(10,30) for i in x ]
#
# plt.figure(figsize=(20,8),dpi = 80)
# #plt.plot(x,y)
#
# #x座标轴信息
#
# my_font= matplotlib.font_manager.FontProperties(fname=r'C:\Windows\Fonts\simsun.ttc',size = 18)
#
# #设置x轴标签,并将字体旋转45度
# plt.xlabel('时间',rotation = 45,fontproperties = my_font)
# #设置y轴标签,
# plt.ylabel('次数',fontproperties = my_font)
#
# #设置标题
# plt.title('每分钟跳动次数',fontproperties = my_font,color = 'red')
# #绘制图形
# plt.plot(x,y)
# plt.show()

'''一线多图'''

''' 假设大家在30岁的时候,根据自己的实际情况,
统计出来你和你同事各自从11岁到30岁每年交的男/女朋友的数量如列表y1和y2,
请在一个图中绘制出该数据的折线图,从而分析每年交朋友的数量走势。'''

# y1 = [1,0,1,1,2,4,3,4,4,5,6,5,4,3,3,1,1,1,1,1]
# y2 = [1,0,3,1,2,2,3,4,3,2,1,2,1,1,1,1,1,1,1,1]
#
# x = range(11,31)
# #设置图形
# plt.figure(figsize=(20,8),dpi=80)
#
# plt.plot(x,y1,color = 'red',label= '自己')
# plt.plot(x,y2,color = 'blue',label = '同事')
#
# #设置x轴刻度标签
#
# xticks_label = ['{}岁'.format(i) for i in x]
# my_font = matplotlib.font_manager.FontProperties(fname=r'C:\Windows\Fonts\simsun.ttc',size = 18)
# plt.xticks(x,xticks_label,fontproperties = my_font,rotation = 45)
#
# #绘制网格(网格也可以设置线的样式)
# #alpha = 0.4 设置网格透明度
# plt.grid(alpha = 0.4)
#
# #添加图例注意:(只有在这里需要添加prop参数是显示中文,其他的都用fontproperties)
# #设置图例位置loc : upper left、 lower left、 center left、 upper center
#
# plt.legend(prop = my_font,loc = 'upper right')
#
# #展示
# plt.show()

'''绘制一图多个座标系子图'''

# #add_subplot方法--给figure增加子图
# x = np.arange(1,100)
# #新建figure对象
# fig = plt.figure(figsize=(20,10),dpi = 80)
# #新建子图1
# ax1 = fig.add_subplot(2,2,1)#表示“2×2网格,第2子图”
# ax1.plot(x,x)
#
# #新建子图2
# ax2 = fig.add_subplot(2,2,2)
# ax2.plot(x,x**2)
#
# #新建子图3
# ax3 = fig.add_subplot(2,2,3)
# ax3.plot(x,np.log(x))
#
# plt.show()

'''设置座标轴范围'''
# x = np.arange(-10,11,1)
# y = x**2
# plt.plot(x,y)
# #可以调x轴的左右两边
# #plt.xlim([-5,5])
#
# #调x轴一边的方向
# plt.xlim(xmin = -4)
# plt.xlim(xmax = 4)
# plt.ylim(ymin = 0)
# plt.ylim(ymax = 100)
# plt.show()

'''改变座标轴的默认显示方式'''

# y = range(0,14,2)
# x = [-3,-2,-1,0,1,2,3]
#
# #获取当前图表的图像
# ax = plt.gca()
#
# #设置图形的包围线
# ax.spines['right'].set_color('none')
# ax.spines['left'].set_color('red')
# ax.spines['top'].set_color('none')
# ax.spines['bottom'].set_color('blue')
#
# #设置底边的移动的范围,移动到y轴的0位置,'data':移动轴的位置到交叉轴的指定座标
# ax.spines['bottom'].set_position(('data',0))
# ax.spines['left'].set_position(('data',0))
#
# plt.plot(x,y)
# plt.show()

'''绘制散点图'''


'''题干
3月份每天最高气温
a = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]
'''

x = range(1,32)
y = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]

#设置图形大小
plt.figure(figsize=(20,8),dpi=80)

plt.scatter(x,y,label = '三月份')

#调整x轴的刻度
my_font = matplotlib.font_manager.FontProperties(fname=r'C:\Windows\Fonts\simsun.ttc',size = 18)

xticks_label = ['3月{}号'.format(i) for i in x]
plt.xticks(x[::3],xticks_label[::3],fontproperties = my_font,rotation = 45)

plt.xlabel('日期',fontproperties = my_font)
plt.ylabel('温度',fontproperties = my_font)

#图例
plt.legend(prop = my_font,loc = 'upper right')
plt.show()

在这里我主要绘制的是折线图,对于饼图、直方图、条形图绘制方法大同小异。希望分享的代码能够帮助到一你们。嘎嘎!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章