matplotlib简单操作

import matplotlib.pyplot as plt
#下面三行解决中文字的显示问题
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

#设置生成的图片的大小
plt.rcParams['figure.figsize'] = (8.0, 8.0)
plt.rcParams['savefig.dpi'] = 300 #图片像素
plt.rcParams['figure.dpi'] = 300#设置图片分辨率




#设置轴向尺度
plt.axis([0,5,0,20])
#设置图像主题
plt.title('my first plot',fontsize=20)
#设置x轴表示含义
plt.xlabel('Count')
#设置y轴表示含义
plt.ylabel('Square value')
#图片插入内容,位置和内容自定义
plt.text(1,1.5,'First')
plt.text(2,4.5,'Second')
plt.text(3,9.5,'Third')
plt.text(4,16.5,'Five')
#给图片设置网格
plt.grid(True)
#设置图片中函数的秒数,这里设置了表格
plt.text(1.1,12,r'$y=x^2$',fontsize=20,bbox={'facecolor':'yellow','alpha':0.2})
#图片里的点,这里是三种不同的图形表示

plt.plot([1,2,3,4],[1,4,9,16],'bo')

plt.plot([1,2,3,4],[0.8,3.5,8,15],'g^')
plt.plot([1,2,3,4],[0.5,2.5,4,12],'b*')
#图片标题,会对不通的图形代表的含义作出解释说明
plt.legend(['First series','Second series','Third series'],loc=2)
#图片保存,格式自己定义
plt.savefig('my_chart.png')






########################################################################



另外针对多画布问题
plt.subplot(221) # 将figure设置的画布大小分成几个部分,参数‘221’表示2(row)x2(colu),即将画布分成2x2,两行两列的4块区域,1表示选择图形输出的区域在第一块,图形输出区域参数必须在“行x列”范围                       ,此处必须在1和2之间选择——如果参数设置为subplot(111),则表示画布整个输出,不分割成小块区域,图形直接输出在整块画布上
plt.plot(y,xx) # 在2x2画布中第一块区域输出图形
plt.subplot(222) 
plt.plot(y,xx)    #在2x2画布中第二块区域输出图形
plt.show()
plt.subplot(223)  #在2x2画布中第三块区域输出图形
plt.plot(y,xx)
plt.subplot(224)  # 在在2x2画布中第四块区域输出图形
plt.plot(y,xx)
#==============================

plt.plot(x,y)  #  只提供x轴,y轴参数,画最简单图形





运行以后会出现下面图形(因为代码里设置的大小参数和轴的尺度不唯一,所以图形仅供参考)

这些只是最基本最简单的操作,主要是牢记各个部分的函数名称,应该不难操作

下面是一个更具体一点的实例

import pandas as pd
columns=['语文','数学','英语','化学','物理','体育']

frame=pd.read_csv('D:\example\score.csv',sep=',',names=columns)

import matplotlib.pyplot as plt
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
plt.rcParams['figure.figsize'] = (8.0, 8.0)
plt.rcParams['savefig.dpi'] = 300 #图片像素
plt.rcParams['figure.dpi'] = 300

fig,axes=plt.subplots(2,1)
#plt.axes=([0,20,0,200])
# plt.ylabel()
# plt.xlabel('成绩')
axes[0].set_xlabel('学生')
axes[0].set_ylabel('分数')
axes[0].set_title('考试成绩一览表')
plt.title('考试成绩一览表')
frame.plot.bar(ax=axes[0],alpha=0.7)
frame.plot.barh(ax=axes[1],alpha=0.7)

frame.plot()

生成一下三张图片,图片未经雕琢,见谅!

再举一个事例加以说明

from matplotlib import font_manager

plt.rcParams['figure.figsize'] = (4.0, 3.0)

x=np.arange(-np.pi,np.pi,000.1)

y=sin(x)

plt.title('函数图像')

plot(x,y,lw=2,c='r',ls='-.',label='数值')
#设置轴向标注
plt.xlabel('数学',fontsize=20)

plt.ylabel('学生',fontsize=20)
#设置x,y轴的上下限
plt.xlim(-np.pi,np.pi)

plt.ylim(-1,1)
设置关键刻度
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi])
#添加文字,前面是坐标,第二个是内容,后面是字体格式
plt.text(0,0.5,'dont move',fontdict={'size':'16','color':'b'})

#添加标注,xy表示标注箭头想要指示的点,xytext:描述信息的坐标,arrowprop表示箭头的样式
plt.annotate('note!!',xy=(-np.pi,0),xytext=(-np.pi,2),fontsize=16,arrowprops=dict(facecolor='black',shrink=0.01))

z=x**3

plot(x,z,label='函数')

plt.legend(loc=(1,0))

深入一点:

a=['猩球崛起3:终极之战','敦刻尔克','蜘蛛侠:英雄归来','战狼2']
b_16=[15746,24456,416,1556]
b_15=[15653,666,5662,365]
b_14=[1646,3666,3662,552]
bar_width=0.2
x_14=list(range(len(a)))
x_15=[i+bar_width for i in x_14]
x_16=[i+bar_width*2 for i in x_14]
plt.figure(figsize=(20,8),dpi=80)
ax=plt.subplot(211)
ax.set_title('Counter')
ax.set_xlabel('x')
plt.bar(range(len(a)),b_14,width=bar_width,label='9月14日')
plt.bar(x_15,b_15,width=bar_width,label='9月15日')
plt.bar(x_16,b_16,width=bar_width,label='9月16日')
plt.legend()
plt.xticks(x_15,a)

更多详情查看https://matplotlib.org/gallery/images_contours_and_fields/interpolation_methods.html#sphx-glr-gallery-images-contours-and-fields-interpolation-methods-py

猜你喜欢

转载自blog.csdn.net/weixin_42575020/article/details/82763899