因为在各种场景下需要各种实验数据的对比图像,有的中还要求dpi,这些在Python中的matplotlib中都可以实现,下面是总结的各种画图命令。

打包文件:https://download.csdn.net/download/pcb931126/10864654

#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) #应用定义的纵向主刻度格式

# ax1.xaxis.grid(True,which="major") #x坐标轴网格使用主刻度格式

# ax1.yaxis.grid(True,which="major") #y坐标轴网格使用主刻度格式

# ax1.set_xticks([]) #去除坐标刻度

# 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()

# ax1.text(2.8, 7, r'y=3*x') #指定位置显示文字,plt.text()

# # #添加标注,参数:注释文本、指向点、文字位置、箭头属性

# 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'

# ax1.grid(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,2*np.ones_like(theta),lw=2) #画图,参数:角度,半径,线宽

# ax1.plot(theta,theta/6,linestyle="--",lw=2) #画图,参数:角度,半径,linestyle样式,lw线宽

# ax2=fig.add_subplot(1,2,2,polar=True) #启动一个极坐标子图

# ax2.plot(theta,np.cos(5*theta),linestyle="--",lw=2)

# ax2.plot(theta,2*np.cos(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') #参数:左偏移、高度、柱宽、透明度、颜色、图例

# #关于左偏移,不用关心每根柱的中心不中心,因为只要把刻度线设置在柱的中间就可以了

# plt.xticks(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() #所有窗口运行

# fig = plt.figure(5)

# ax=fig.add_subplot(1,1,1,projection='3d') #绘制三维图

# x,y=np.mgrid[-2:2:20j,-2:2:20j] #获取x轴数据,y轴数据

# z=x*np.exp(-x**2-y**2) #获取z轴数据

# ax.plot_surface(x,y,z,rstride=2,cstride=1,cmap=plt.cm.coolwarm,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()

画图结果如下:

其他图模块图

---------------------

作者:pcb931126

原文:https://blog.csdn.net/pcb931126/article/details/85124369

声明: 本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。