-
2022-03-17 18:57:26
1 plt.figure() :创建画布
plt.figure(num=None, figsize=None, facecolor=None, edgecolor=None, clear=False, )
num:画布序号,一般默认是从1递增
figsize=(长,宽):画布尺寸,常用
facecolor:背景色,默认白色
edgecolor:边缘色,默认白色
clear:是否清除原来的画布,默认False自动创建新画布
2 plt.subplot() :创建子图
plt.subplot(numRows, numCols, plotNum)
numRows:行数
numCols:列数,画布被分成numRows行和numCols列
plotNum:按照从左到右,从上到下的顺序对每个子图进行编号。 该参数可以指定画图区域。
import matplotlib.pyplot as plt x = [1, 2, 3, 4] y1 = [1, 2, 3, 4] y2 = [1, 4, 9, 16] y3 = [2, 6, 6, 8] y4 = [1, -3, 5, 7] plt.figure() plt.subplot(221) plt.plot(x, y1, 'r') plt.subplot(222) plt.plot(x, y2) plt.subplot(223) plt.plot(x, y3,'g') plt.subplot(224) plt.plot(x, y4,'y') plt.show()
3 plt.subplots_adjust():调整子图间的距离
plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)
left:默认为0.125,子图(subplot)距画板(figure)左边的距离
right:默认为0.9,子图(subplot)距画板(figure)右边的距离
bottom:默认为0.1,子图(subplot)距画板(figure)底部的距离
top:默认为0.9,子图(subplot)距画板(figure)顶部的距离
wspace:默认为0.2,子图水平间距
hspace:默认为0.2,子图垂直间距
import matplotlib.pyplot as plt x = [1, 2, 3, 4] y1 = [1, 2, 3, 4] y2 = [1, 4, 9, 16] y3 = [2, 6, 6, 8] y4 = [1, -3, 5, 7] plt.figure() plt.subplot(221) plt.plot(x, y1, 'r') plt.subplot(222) plt.plot(x, y2) plt.subplot(223) plt.plot(x, y3,'g') plt.subplot(224) plt.plot(x, y4,'y') plt.subplots_adjust(hspace=0.5, wspace=0.5) plt.show()
4 plt.plot():画图
plt.plot(x, y, linestyle, color, linewidth, label)
x,y:分别是x轴数据和y轴数据、linestyle:线条类型、color:颜色(默认值为蓝色'b')、linewidth:线宽度、label:曲线标签,后使用plt.legend( )创建图例。
import matplotlib.pyplot as plt y = [1, 2, 20, 50] plt.figure() plt.plot(y) #只给y时,x默认为range(len(y)),即0、1、2、3...len(y)-1 plt.show()
import matplotlib.pyplot as plt x = [1, 2, 3, 4] y1 = [1, 2, 3, 4] y2 = [1, 4, 9, 16] plt.figure() plt.plot(x, y1) #同一个图画多条曲线 plt.plot(x, y2) #可看出绘制多条线条时,系统会自动更改线条颜色,第一个默认值为蓝色'b' plt.show()
import matplotlib.pyplot as plt x = [1, 2, 3, 4] y1 = [1, 2, 3, 4] y2 = [1, 4, 9, 16] y3 = [1, 8, 27, 64] y4 = [1, 16, 81, 124] plt.figure() plt.plot(x, y1, linestyle='-') #实线 plt.plot(x, y2, linestyle='--') #虚线 plt.plot(x, y3, linestyle='-.') #折点线 plt.plot(x, y4, linestyle=':') #点线 plt.show()
5 plt.scatter():绘制散点图
plt.scatter(x, y, s=None)
x,y:散点的坐标、s:散点的面积、color:散点的颜色(默认值为蓝色'b')
import matplotlib.pyplot as plt x = [1, 2, 3, 4] y = [1, 2, 20, 50] plt.figure() plt.scatter(x, y, s=10) plt.show()
6 plt.legend():创建图例
在plt.plot()里添加label属性后,可调用plt.legend(),产生legend
7 plt.xlabel(' '):在横坐标添加标签
字符串中不可以包含中文
8 plt.title(' '):增加主题
字符串中不可以包含中文
import matplotlib.pyplot as plt x = [1, 2, 3, 4] y = [1, 2, 20, 50] plt.figure() plt.plot(x, y,label='line1') plt.legend() #创建图例 plt.xlabel("X axis") #x轴标签 plt.ylabel("Y axis") #y轴标签 plt.title("figure1") #主题 plt.show()
9 plt.savefig( ):将图表保存到文件中
plt.savefig('存储位置'+'照片名'+'.照片类型')
10 plt.show( ):展现画布
进阶学习
更多相关内容 -
python——matplotlib提升应用plt.bar、plt.hist、plt.plot、plt.boxplot、plt.scatter
2020-03-26 14:58:00柱状图plt.bar 同一柱状图堆叠显示plt.pivot()+plt.bar(bottom=) 对于不同季度,不同产品的质量评价显示,先将使用的数据内容通过pd.pivot_table()进行数据筛选,重新设置了索引列和列标题(columns),再对数据使用...柱状图plt.bar
同一柱状图堆叠显示plt.pivot()+plt.bar(bottom=)
对于不同季度,不同产品的质量评价显示,先将使用的数据内容通过pd.pivot_table()进行数据筛选,重新设置了索引列和列标题(columns),再对数据使用柱状图显示
import numpy as np import pandas as pd import matplotlib.pyplot as plt data=pd.read_csv(r'my_csv_date.csv',encoding='gbk') print(data) #解决中文乱码问题 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus']=False plt.figure(figsize=(6.4,4.8))#设置图片背景的参数 print('下面是整理后的数据:==========') #通过pivot_table函数重新提取数据两列作为(data)索引列和横向的列名(columns),另外的vlues对应的是数列,注意的是,尽量让索引是和数字有关的序列,可自动排序 over_view=pd.pivot_table(data=data,index='Q',columns='GOODS',values='QUA',aggfunc=np.sum) print(over_view) #使用tick_label对x轴的标签重新赋值 plt.bar(x= over_view.index.values,height=over_view.甲,color='green',tick_label=['第一季度','第二季度','第三季度','第四季度'] ) plt.bar(x= over_view.index.values,height=over_view.乙,bottom=over_view.甲 ,color='red') plt.bar(x= over_view.index.values,height=over_view.丙,bottom=over_view.甲+over_view.乙,color='orange') plt.xticks(rotation=45) #x轴上的标签旋转45度 plt.ylabel('质量分数',fontsize=20,labelpad=20) plt.show()
通过上边的程序和运行结果,得出一下几点注意,
1、索引尽量使用能够数字排序的字符,可自动排序,到最后只需使用plt.bar(tick_label=[ ])修改横坐标的标签字符即可
2、建立直方图时,使用的数据是自己处理后的变量索引和column,而且处理数据一般使用np.sum(),记录一类数量。
3、为了显示的图形不会出现遮挡,需要使用到plt.bar(bottom=),将想要放在下边的数据作为值传入,若不使用,每次图形的最低端都是以横轴开始计算,若出现完全遮挡,则图形无意义
上例中,每个季度,三个产品的服务质量评分。让季度和物品名称(甲乙丙)作为横纵参数,服务质量分数作为数据显示同一柱状图堆叠显示plt.crosstab(nomalize=)+plt.bar(bottom=)
堆叠显示,对数据选择并单位化,可以明显看出,每个阶段数据量占的百分比;
而且再使用bar绘制图形时,要设置label属性的值,否则,使用plt.legend时会出现问题
plt.legend()的显示位置不合适,可以通过plt.legend()中的bbox_to_anchor=(坐标),认为图形的右上角是(1,1),可设置(1.01,0.8)将内容注释放在图像外部#前面和上个程序一样 over_view=pd.crosstab(data.Q,data.GOODS,normalize='index', values=data.QUA,aggfunc=np.sum,) print(over_view) plt.bar(x= over_view.index.values,height=over_view.甲,color='green',label='甲',tick_label=['第一','第二','第三','第四'] ) plt.bar(x= over_view.index.values,height=over_view.乙,bottom=over_view.甲 ,label='乙',color='red') plt.bar(x= over_view.index.values,height=over_view.丙,label='丙',bottom=over_view.甲+over_view.乙,color='orange') plt.xticks(rotation=45)#旋转横坐标标签 plt.ylabel('质量分数',fontsize=20,labelpad=20) plt.legend(bbox_to_anchor=(1.01,0.8)) plt.show()
程序解析:这个程序及绘制的图形是通过pd.crosstab( )将数据的每一行(也就是index的每行)归一化直方图plt.hist
正态分布函数,下面函数返回对应的计算正态频率值输出
def zhengtai_func(x,miu,sigma): zhen_y=np.exp(-(x-miu)**2/(2*(sigma**2)))/(sigma*np.sqrt(2*np.pi)) return zhen_y
正态计算公式;
data=pd.read_csv(r'my_csv_date.csv',encoding='gbk') print(data) #解决中文乱码问题 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus']=False #删除数据中缺失项,计算数据的均值,标准差,和正态分布频率点 data.dropna(subset=['人数'],inplace=True) print(data) #x_mean=np.mean(data.人数) #与下一行数据功能相同 x_mean=data.人数.mean() x_std=np.std(data.人数) x=np.arange(data.人数.min(),data.人数.max(),0.1) y=zhengtai_func(x,x_mean,x_std) #显示直方图,核密度图,设置注释标签label plt.hist(x=data.人数,bins=5,color='lightblue',label='年龄频率',\ edgecolor='orange',density=True) plt.plot(x,y,color='red',linewidth=3,label='正态分布线') data.人数.plot(kind='kde',color="black",xlim=[0,10],label='核密度图') plt.xlabel('不同年龄',fontsize=15,labelpad=20) plt.title('年龄频率分布图',fontsize=25,pad=25) plt.legend(loc='best') plt.show()
程序及图形解析:
1、先定义了正态分布的概率计算,参数分别是,数据x,平均值x_mean,标准差x_std,返回计算的概率值,,
2、然后读取数据,data.dropna( )删除缺失数据行,计算数据均值,标准差,取多个x值,通过正态公式显示成线,(使用数据的平均值和标准差就确定了数据的正态概率分布图)。
3、绘制直方图plt.hist( ),正态分布线plt.plot( x,y),核密度分布线data.plot(kind=‘kde’)、
4、核密度分布和正态分布区别:核密度分布和数据的每阶段的关系更大,正态分布确定了平均平均值和标准差后就确定了箱图plt.boxplot()
plt.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, bootstrap=None, usermedians=None, conf_intervals=None, meanline=None, showmeans=None, showcaps=None, showbox=None, showfliers=None, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None, manage_xticks=True, autorange=False, zorder=None, hold=None, data=None)
**x:**指定要绘制箱线图的数据;
notch:是否是凹口的形式展现箱线图,默认非凹口;
sym:指定异常点的形状,默认为+号显示;
vert:是否需要将箱线图垂直摆放,默认垂直摆放;
whis:指定上下须与上下四分位的距离,默认为1.5倍的四分位差;
positions:指定箱线图的位置,默认为[0,1,2…];
widths:指定箱线图的宽度,默认为0.5;
**patch_artist:**是否填充箱体的颜色;
**meanline:**是否用线的形式表示均值,默认用点来表示;
**showmeans:**是否显示均值,默认不显示;
showcaps:是否显示箱线图顶端和末端的两条线,默认显示;
**showbox:**是否显示箱线图的箱体,默认显示;
showfliers:是否显示异常值,默认显示;
**boxprops:**设置箱体的属性,如边框色,填充色等;
labels:为箱线图添加标签,类似于图例的作用;
filerprops:设置异常值的属性,如异常点的形状、大小、填充色等;
**medianprops:**设置中位数的属性,如线的类型、粗细等;
**meanprops:**设置均值的属性,如点的大小、颜色等;
**capprops:**设置箱线图顶端和末端线条的属性,如颜色、粗细等;
whiskerprops:设置须的属性,如颜色、粗细、线的类型等;data=pd.read_csv(r'my_csv_date.csv',encoding='gbk') print(data) #解决中文乱码问题 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus']=False plt.boxplot(x=data.人数,patch_artist=True,showmeans=True,meanline=True, boxprops={'facecolor':'green','color':'red'},\ flierprops={'marker':'o','markerfacecolor':'red','markersize':20},\ medianprops={'linestyle':'--','color':'orange'},\ meanprops={'linestyle':'-','color':'blue'}) plt.xlabel('不同标号的人数',fontsize=15,labelpad=20) plt.title('人数箱图',fontsize=25,pad=25) # plt.legend(loc='best') plt.show()
程序解释及图形描述,箱图能够明显的显示出离群点,箱子的显示框在分位数的25%-75%,下线:25%分数-1.5(75%分位数-25%分位数),上线:25%分数+1.5(75%分位数-25%分位数),散点图plt.scatter
感谢鸢尾花数据
鸢尾花数据官方网址,下载或打开慢
为了展示两个连续型变量的关系,使用循环为每一个事物给不同的显示属性,注意数据的名称准确性data=pd.read_csv(r'iris.csv',encoding='gbk') # print(data) #解决中文乱码问题 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus']=False #设置不同物种的颜色形状标记 species=['virginica','setosa','versicolor'] colors=['red','blue','orange'] marker=['o','s','x'] #给每个物种不同标记 for i in range(0,3): plt.scatter(x=data.Width[data.Species==species[i]], y=data.Length[data.Species==species[i]], color=colors[i],marker=marker[i],label=species[i]) plt.legend(loc='best') plt.ylabel('花瓣长度',fontsize=15,labelpad=10) plt.xlabel('花瓣宽度',fontsize=15,labelpad=10) plt.title('三种鸢尾花数据',fontsize=20,pad=20) plt.show()
折线图plt.plot()
显示数据的变化趋势
#设置图像大小和读取数据 fig=plt.figure(figsize=(8,7)) data=pd.read_csv(r'my_csv_date.csv',encoding='gbk') print(data) #解决中文乱码问题 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus']=False #设置第1列作为x的值,第3,4,5列作为对应的y值 plt.plot(data.iloc[:,0],data.iloc[:,2],'bs--', data.iloc[:,0],data.iloc[:,3],'ro--', data.iloc[:,0],data.iloc[:,4],'gh--',) #修改折线图的横坐标名称,第一个参数是原始名称,第二个参数是新的名称 plt.xticks(range(0,12,1),data.iloc[range(0,12,1),1],rotation=45,fontsize=10) plt.legend(loc='best') plt.ylabel('数据值',fontsize=15,labelpad=10) plt.xlabel('顺序',fontsize=15,labelpad=10) plt.title('数据变化',fontsize=20,pad=20) plt.show()
下面是对图像中线的描述,(程序和图像并不对应),图片中的参数正确plt.legend(loc='best',frameon=False,ncol=1) plt.legend(loc='best',frameon=True,ncol=1) plt.legend(loc='best',frameon=False,ncol=3)
-
python画图plt函数学习
2021-04-12 20:41:39导入:import matplotlib.pyplot as plt 画图主要有:列表绘图;多图绘图;数组绘图 二. 列表绘图 1. 基础绘图:plt.plot;plt.show import matplotlib.pyplot as plt x = [1, 2, 3, 4] y = [1, 4, 9, 16] plt.plot...python中的绘图工具 :matplotli,专门用于画图。
一. 安装与导入
工具包安装:
conda install matplotli
导入:import matplotlib.pyplot as plt
画图主要有:列表绘图;多图绘图;数组绘图
二. 列表绘图
1. 基础绘图:plt.plot;plt.show
import matplotlib.pyplot as plt x = [1, 2, 3, 4] y = [1, 4, 9, 16] plt.plot(x, y) plt.show()
2. 画图设置属性
画图属性设置
r g b y k 红色 绿色 蓝色 黄色 黑色 - – : -。 实线 虚线 点线 点横线 + o * . x s d ^ v p 加号 圆圈 星号 实心点 叉号 正方形 钻石形 上三角 下三角 五角星 import matplotlib.pyplot as plt x = [1, 2, 3, 4] y = [1, 4, 9, 16] # plt.plot(x, y, color='r', marker='o', linestyle='--') plt.plot(x, y, 'ro--') # 该行为上一句的简写 plt.show()
3. 坐标轴的属性
(1)x、y坐标名称设置
plt.xlabel('x') plt.ylabel('y')
(2)设置x、y范围
主要参考博客
plt.axis([a, b, c, d])
设置x轴的范围为[a, b],y轴的范围为[c, d]
plt.axis('equal')
x,y轴刻度等长
plt.axis('square')
作图为正方形,并且x,y轴范围相同
(3)坐标间隔设定
参考博客
plt.xticks(参数一,参数二,参数三)
用来实现对x轴和y轴坐标间隔(也就是轴记号)的设定。- 参数一:x或者y的参数
- 参数二:新的标签
- 参数三:旋转角度
import matplotlib.pyplot as plt x = [1, 2, 3, 4] y = [1, 4, 9, 6] labels = ['Frogs', 'Hogs', 'Bogs', 'Slogs'] plt.plot(x, y) # You can specify a rotation for the tick labels in degrees or with keywords. plt.xticks(x, labels, rotation='vertical') plt.show()
4. 坐标轴移动
参考博客
ax = plt.gca()
获取当前坐标轴,总共有四个轴top、bottom、left和right
ax.spines[‘bottom’]
获取底部的轴,获取哪个轴,则参数中写哪个
ax.spines['right'].set_color('none')
隐藏了右侧的坐标轴
ax.spines['top'].set_color('none')
隐藏了左侧的坐标轴ax.xaxis.set_ticks_position('bottom')
要挪动底部的X轴,所以先目光锁定底部。
ax.spines['bottom'].set_position(('data',0))
在这里,position位置参数有三种,这里用到了“按Y轴刻度位置挪动”,'data’表示按数值挪动,其后数字代表挪动到Y轴的刻度值则移动坐标轴位置的代码变为:
import matplotlib.pyplot as plt plt.figure(1) plt.plot() ax = plt.gca() ax.xaxis.set_ticks_position('bottom') ax.spines['bottom'].set_position(('data',0)) ax.yaxis.set_ticks_position('left') ax.spines['left'].set_position(('data',0)) ax.spines['top'].set_color('none') # 设置顶部支柱的颜色为空 ax.spines['right'].set_color('none') # 设置右边支柱的颜色为空 plt.show()
5. 图片上添加文本和网格
(1)
plt.title('标题')
添加标题,可以参考博客
(2)plt.annotate()
添加注释,可以参考博客import matplotlib.pyplot as plt x=[1, 2, 3, 4] y=[1, 4, 9, 16] plt.plot(x, y) plt.xlabel('x坐标轴') #y轴文本 plt.ylabel('y坐标轴') #标题 plt.title('Title') #添加注释 参数名xy:箭头注释中箭头所在位置,参数名xytext:注释文本所在位置, #arrowprops在xy和xytext之间绘制箭头, shrink表示注释点与注释文本之间的图标距离 plt.annotate('I am zhushi', xy=(2,5), xytext=(2, 10), arrowprops=dict(facecolor='black', shrink=0.01), ) #第3步:显示图形 plt.show()
(3)
plt.legend()
右上角显示各个曲线代表什么意思。import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False n = np.linspace(-5, 4, 30) m1 = 3 * n + 2 m2 = n ** 2 plt.xlabel('时间') plt.ylabel('心情') plt.plot(n, m1, color='r', linewidth=1.5, linestyle='-', label='女生购物欲望') plt.plot(n, m2, 'b', label='男生购物欲望') plt.legend() # 右上角显示各个曲线代表什么意思 plt.show()
(4)是否显示网格
import matplotlib as mpl import matplotlib.pyplot as plt plt.grid() # 显示网格线 1=True=默认显示;0=False=不显示 plt.grid(1) # 显示网格线 plt.grid(True) # 显示网格线 plt.grid(b=True) # 显示网格线 plt.grid(b=1) # 显示网格线 plt.grid(b=True, axis='x') #只显示x轴网格线 plt.grid(b=True, axis='y') #只显示y轴网格线
三、多图绘制
如何使用Python创建多个画板和画纸来绘制多幅图,如果事先不声明画板画板,默认是创建一个画板一个画纸- 使用figure()方法创建画板1
- 使用subplot()方法创建画纸,并选择当前画纸并绘图
- 最后显示图形
figure()
函数可以帮助我们同时处理生成多个图,而subplot()
函数则用来实现,在一个大图中,出现多个小的子图。处理哪个figure,则选择哪个figure,再进行画图。
import matplotlib.pyplot as plt import numpy as np x = np.arange(-1, 1, 0.1) plt.figure(1) # 生成第一个图,且当前要处理的图为fig.1 plt.subplot(1, 2, 1) # fig.1是一个一行两列布局的图,且现在画的是左图 y1 = np.exp(x) plt.plot(x, y1, color="r", linestyle="-", marker="^", linewidth=1) # 画图 plt.xlabel("x") plt.ylabel("y1") plt.figure(2) # 生成第二个图,且当前要处理的图为fig.2 y2 = np.exp(2 * x) plt.plot(x, y2, color="k", linestyle="-", marker="s", linewidth=1) # 画图,fig.2是一张整图,没有子图,默认subplot(1, 1, 1) plt.xlabel("x") plt.ylabel("y2") plt.figure(1) # 当前要处理的图为fig.1,而且当前图是fig.1的左图 plt.subplot(1, 2, 2) # 当前图变为fig.1的右图 y3 = np.exp(1.5 * x) plt.plot(x, y3, color="b", linestyle="-", marker="v", linewidth=1) plt.xlabel("x") plt.ylabel("y3") plt.show()
其他属性则与上一节二一样设置。
也可以将subplot子图设置为ax,然后对ax进行画图,则常用设置即为:
ax.set_xlabel('x') #设置x轴名称 ax.set_ylabel('y') #设置y轴名称 ax.set_title('title') #设置标题 ax.legend() #设置图例: #方法1: # ax.plot(x1,y1,label='label1',x2,y2,label='label1') ax.legend() #方法2: # ax.plot(x1,y1,,x2,y2) ax.legend(('label1', 'label2')) #可设置图例位置属性:ax.legend(loc='best'),其他位置包括:'upper right','upper left', 'lower right','lower left','center'等 ax.set_xlim(0,5) #设置x轴范围 ax.set_ylim(0,5) #设置y轴范围 ax.set_xticks((0, 2, 4, 6)) #设置x轴刻度 ax.set_xticks((0, 2, 4, 6)) #设置y轴刻度 ax.set_xticklabels(labels=['x1','x2','x3','x4'],rotation=30,fontsize='small') #设置x刻度的显示文本 ax.set_yticklabels() #设置y刻度的显示文本,同上 ax.text() #指定位置显示文本 ax.annotate() #添加标注,参数:注释文本、指向点、文字位置、箭头属性 ax.grid() #显示网格
修改上述代码则为:
import matplotlib.pyplot as plt import numpy as np x = np.arange(-1, 1, 0.1) plt.figure(1) # 生成第一个图,且当前要处理的图为fig.1 ax1 = plt.subplot(1, 2, 1) # fig.1是一个一行两列布局的图,且现在画的是左图 y1 = np.exp(x) plt.plot(x, y1, color="r", linestyle="-", marker="^", linewidth=1) # 画图 ax1.set_xlabel("x") ax1.set_ylabel("y1") plt.figure(2) # 生成第二个图,且当前要处理的图为fig.2 y2 = np.exp(2 * x) plt.plot(x, y2, color="k", linestyle="-", marker="s", linewidth=1) # 画图,fig.2是一张整图,没有子图,默认subplot(1, 1, 1) plt.xlabel("x") plt.ylabel("y2") plt.figure(1) # 当前要处理的图为fig.1,而且当前图是fig.1的左图 ax2 = plt.subplot(1, 2, 2) # 当前图变为fig.1的右图 y3 = np.exp(1.5 * x) plt.plot(x, y3, color="b", linestyle="-", marker="v", linewidth=1) ax2.set_xlabel("x") ax2.set_ylabel("y3") plt.show()
四. 数组绘图
就是根据数组和函数进行绘图,和上面没什么区别。
#多图绘制 import matplotlib.pyplot as plt #导入包numpy import numpy as np #定义一维数组 t = np.arange(0, 5, 0.2) #使用数组同时绘制多个线性 #线条1 x1=y1=t #线条2 x2=x1 y2=t**2 #线条3 x3=x1 y3=t**3 #使用plot绘制线条 linesList=plt.plot(x1, y1, x2, y2, x3, y3 ) #用setp方法可以同时设置多个线条的属性 plt.setp(linesList, color='r') plt.show() print('返回的数据类型',type(linesList)) print('数据大小:',len(linesList))
-
Python深度学习入门之plt画图工具基础使用(注释详细,超级简单)
2020-11-15 14:07:41Python自带的plt是深度学习最常用的库之一,在发表文章时必然得有图作为支撑,plt为深度学习必备技能之一。作为深度学习入门,只需要掌握一些基础画图操作即可,其他等要用到的时候看看函数API就行。 1 导入plt库...Python自带的plt是深度学习最常用的库之一,在发表文章时必然得有图作为支撑,plt为深度学习必备技能之一。作为深度学习入门,只需要掌握一些基础画图操作即可,其他等要用到的时候看看函数API就行。
1 导入plt库(名字长,有点难记)
import matplotlib.pyplot as plt
先随便画一个图,保存一下试试水:
plt.figure(figsize=(12,8), dpi=80) plt.plot([1,2,6,4],[4,5,6,9]) plt.savefig('./plt_png/test1.png') #必须要放在show()前面,show()之后会自动释放图表内存 plt.show()
2 创建数据,画一个标准的图
import random #创建一个小时内温度随时间变化的曲线(以分钟计算,温度在15到20之间) #1.准备数据 x = range(60) y = [random.uniform(15,20)for i in x] #2.创建画布 plt.figure( figsize=(12,8), dpi=80 ) plt.plot(x,y) #3 设置刻度及步长 z = range(40) x_label = ['11:{}'.format(i) for i in x] plt.xticks( x[::5], x_label[::5]) plt.yticks(z[::5]) #5是步长 #4 添加网格信息 plt.grid(True, linestyle='--', alpha=0.5) #默认是True,风格设置为虚线,alpha为透明度 #5 添加标题(中文在plt中默认乱码,不乱码的方法在本文最后说明) plt.xlabel('Time') plt.ylabel('Temperature') plt.title('Curve of Temperature Change with Time') #6 保存图片,并展示 plt.savefig('./plt_png/test1.2.png') plt.show()
3 画两条曲线的图
#3 创建另一个曲线的数据 y_another = [random.uniform(5,10)for i in x] #输入两个曲线的信息 plt.figure( figsize=(12,8), dpi=80 ) plt.plot(x, y, color='r', linestyle='--', label = 'ShangHai') plt.plot(x, y_another, color='g', linestyle='-.', label = 'BeiJing') #显示图例 plt.legend() #默认loc=Best #设置刻度及步长 z = range(40) x_label = ['11:{}'.format(i) for i in x] plt.xticks( x[::5], x_label[::5]) plt.yticks(z[::5]) #5是步长 #添加网格信息 plt.grid(True, linestyle='--', alpha=0.5) #默认是True,风格设置为虚线,alpha为透明度 #添加标题 plt.xlabel('Time') plt.ylabel('Temperature') plt.title('Curve of Temperature Change with Time') plt.savefig('./plt_png/test1.3.png') plt.show()
4 多个绘图区域画不同的图
#4 创建多个绘图区 #输入两个曲线的信息 #plt.figure( figsize=(12,8), dpi=80 ) figure, axes = plt.subplots( nrows=1, ncols=2, figsize=(12,8), dpi=80 ) axes[0].plot(x, y, color='r', linestyle='--', label = 'ShangHai') axes[1].plot(x, y_another, color='g', linestyle='-.', label = 'BeiJing') #显示图例 axes[0].legend() #默认loc=Best axes[1].legend() #设置刻度及步长 z = range(40) x_label = ['11:{}'.format(i) for i in x] #axes[0].set_xticks( x[::5], x_label[::5]) #set_xticks()不支持字符串,只支持布尔值 #axes[1].set_yticks(z[::5]) #5是步长 #set_yticks()不支持字符串,只支持布尔值 axes[0].set_xticks( x[::10]) #设置步长 axes[0].set_xticklabels(x_label[::5]) #设置字符串名 axes[0].set_yticks(z[::5]) axes[1].set_xticks( x[::10]) #设置步长 axes[1].set_xticklabels(x_label[::5]) #设置字符串名 axes[1].set_yticks(z[::5]) #添加网格信息 axes[0].grid(True, linestyle='--', alpha=0.5) #默认是True,风格设置为虚线,alpha为透明度 axes[1].grid(True, linestyle='--', alpha=0.5) #添加标题 axes[0].set_xlabel('Time') axes[0].set_ylabel('Temperature') axes[0].set_title("Curve of ShangHai's Temperature Change with Time") axes[1].set_xlabel('Time') axes[1].set_ylabel('Temperature') axes[1].set_title("Curve of BeiJing's Temperature Change with Time") plt.savefig('./plt_png/test1.4.png') plt.show()
5 绘制简单数学函数图像
import numpy as np #准备数据 x = np.linspace(-1,1,1000) #在-1至1之间等距生成1000个数 y = 2*x*x #绘制画布 #折线图plot plt.figure(figsize=(12,8), dpi=80) plt.plot( x, y, color='b', label='Y=2*X^2' ) plt.legend() plt.grid(True, linestyle='--', alpha=0.5) plt.savefig('./plt_png/test1.5.png') plt.show()
6 散点图、柱状图、双柱状图、直方图、饼图
6.1 散点图
#散点图scatter x = np.linspace(-1,1,20) y = 2*x*x plt.figure(figsize=(12,8), dpi=80) plt.scatter( x, y, color='b', label='Y=2*X^2' ) #主要是这里plot换成scatter,下面的根据需要修改 plt.legend() plt.grid(True, linestyle='--', alpha=0.5) plt.savefig('./plt_png/test1.6.png') plt.show()
6.2 柱状图#柱状图bar x = range(8) y = [100,200,400,350,450,350,250,300] plt.figure(figsize=(20,8), dpi=80) plt.bar( x, y, width=0.4, color=['r', 'k', 'y', 'g', 'b', 'c', 'm', 'k'], label='Bar_x_y' ) #这里是bar()函数 plt.legend() plt.grid(True, linestyle='--', alpha=0.5) #修改x刻度名字 plt.xticks(x, ['class1','class2','class3','calss4','class5','class6','class7','calss8']) #设置xy标签 plt.xlabel('Classes') plt.ylabel('Numbers') plt.title('the Numbers of Classes') plt.savefig('./plt_png/test1.7.png') plt.show()
6.3 对比柱状图(双柱状图)#对比柱状图bar x = range(8) y = [100,200,400,350,450,350,250,300] z = [200,300,350,250,450,450,500,250] plt.figure(figsize=(20,8), dpi=80) plt.bar( x, y, width=0.2, color='r', label='Bar_1' ) #加一个柱状图,[i+0.2 for i in x]为间距生成式 plt.bar( [i+0.2 for i in x], z, width=0.2, color='b', label='Bar_2' ) plt.legend() plt.grid(True, linestyle='--', alpha=0.5) #修改x刻度名字 plt.xticks([i+0.1 for i in x], ['class1','class2','class3','calss4','class5','class6','class7','calss8']) #设置xy标签 plt.xlabel('Classes') plt.ylabel('Numbers') plt.title('the Numbers of Classes') plt.savefig('./plt_png/test1.8.png') plt.show()
6.4 直方图
#直方图histogram x_1 = range(80) number = np.random.randint(50,200,[80]) print(max(number),min(number)) bins = int((max(number) - min(number))//10) plt.figure(figsize=(20,8), dpi=80) plt.hist( number, bins=bins, color='b', label='Histogram' ) #y轴可以是频数,也可以是频率 plt.legend() plt.grid(True, linestyle='--', alpha=0.5) plt.xticks(range(min(number), max(number), 10)) plt.savefig('./plt_png/test1.9.png') plt.show()
6.5 饼图
#饼图pie ,超过9个类别不适合用饼图 import matplotlib.pyplot as plt x3 = range(8) y3 = [100,200,400,350,450,350,250,300] z3 = ['class1','class2','class3','calss4','class5','class6','class7','calss8'] plt.figure(figsize=(20,8), dpi=80) plt.pie( y3, labels=z3, colors=['r', 'k', 'y', 'g', 'b', 'c', 'm', 'k'], autopct='%1.2f%%' ) plt.legend() plt.title('the Numbers of Classes') plt.axis('equal') #调节饼图长轴短轴的比例,以及整图布局 plt.savefig('./plt_png/test1.10.png') plt.show()
注:plt不能显示中文的解决方法
导入plt时顺便加上下面两行代码即可
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] #显示中文 plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
-
plt.plot(),plt.scatter(),plt.legend函数的用法介绍
2021-11-24 13:21:56plt.plot()函数 plt.plot(x, y, format_string, **kwargs) 参数 说明 x X轴数据,列表或数组,可选 y Y轴数据,列表或数组 format_string 控制曲线的格式字符串,可选 **kwargs 第二组或更多(x,y,... -
plt.style.use
2020-07-30 15:14:42print(plt.style.available) # 打印样式列表 ['bmh', 'classic', 'dark_background', 'fast', 'fivethirtyeight', 'ggplot', 'grayscale', 'seaborn-bright', 'seaborn-colorblind', 'seaborn-dark-palette', '... -
plt.plot()详解
2021-07-11 18:02:07plt.plot()函数是matplotlib.pyplot模块下的一个函数,用于画图 它可以绘制点和线, 并且对其样式进行控制. 由浅入深介绍如下 1.plt.plot(x, y) 1.1 x为x轴数据, y为y轴数据 import matplotlib.pyplot as plt x=... -
cv2,PIL,plt,tensorflow方法图片显示及plt的的plt.colorbar()的使用需要注意
2021-05-14 10:40:28需要将图片经过tf.Session()执行 二、cv2读取文件中不能有中文字符 三、cv2读取三通道和单通道的不同 四、cv2的取的图片文件使用cv.imshow()显示时,需要注意图像的像素值范围必须映射到0-255 五、plt.colorbar()... -
python plt.plot()绘图
2021-03-17 16:39:45推荐用电脑绘图,如果是安卓手机,推荐 应用汇 -- pydroid.#本文的命令都要调用的包包,# 此外再次强调for 条件 要加冒号 : 回车后循环体要加四个空格import numpy as npimport matplotlib.pyplot as plt一. plt.plot()... -
plt 画矩形
2022-02-16 13:39:35在CT图像上画矩形,cv2虽然画矩形很方便,但是显示CT图的时候灰蒙蒙的(还不知道是什么原因),plt显示CT图像正常,直接用plt画矩形算了 cv2.rectangle(img_slice0, left_xy1, left_xy2, (0, 0, 255)) cv2.imshow... -
plt.plot 、plt.subplot、plt.subplots区别
2021-02-08 23:23:00plt.plotfig = plt.figure(figsize=(16,16),dpi=300) # 初始化一张画布,可以设置figsize和dpiplt.plot() #直接在一张... -
python图像处理基础知识(plt库函数说明)
2022-03-15 15:30:53import matplotlib.pyplot as plt的一些基础用法,包括直方图 -
python绘制子图技巧——plt.subplot和plt.subplots、及坐标轴修改
2021-12-25 22:49:25python绘制子图技巧——plt.subplot和plt.subplots、及坐标轴修改plt.subplotplt.subplots坐标轴修改 偶然发现python(matplotlib)中绘制子图有两种方法,一种是plt.subplot,另一种是plt.subplots,这篇博客说... -
plt.imshow
2021-10-27 19:25:35plt.imshow(X) X:图像数据 (M, N):标量数据的图像,灰度图 (M, N, 3):RGB图像 (M, N, 4):RGBA图像 注意:其中RGB和RGBA图像为float类型[0, 1],或者int类型[0, 255] 显示图像 Display an image, i.e. ... -
Matplotlib(plt.plot在图表中绘制一条线,plt.scatter绘制散点图,plt.bar绘制柱状图(条形图),plt.barh...
2021-11-21 16:44:02matplotlib matplotlib是python底层绘图库,主要做数据可视化图表,模仿MATLAB构建 plt.figure修改图表大小 ...plt.xticks,plt.yticks设置x轴y轴的刻度 设置x轴y轴的刻度 plt.xticks(x,name) plt.yticks([-2, -
plt.subplot()和plt.subplots(),plt.gca(),
2021-11-26 15:31:57当前图表可以使用plt.gcf()获得 >Get_ Current_Figure = plt.gcf() >!!!!当前子图可以使用Plt.gca()获得 >Get_ Current_Axes = plt.gca() plt.subplots() 理解:先设置画布分布,确定坐标位置可以认为是... -
python plt 画图
2018-11-12 20:27:29plt可以画多个子图 import numpy as np fig = plt . figure ( ) ax1 = fig . add_subplot ( 2 , 1 , 1 ) # 画2行1列个图形的第1个 ax2 = fig . add_subplot ( 2 , 1 , 2 ) # 画2行1列个图形的第2个... -
python plt.bar 颜色
2020-12-05 02:26:07由于Matplotlib是Python的一个库,因此在程序开发中,它也可以使用 Python的... Matplotlib 概述使用 pyplot 创建......fig=plt.figure()ax = fig.add_subplot(111, polar=True)# 绘制折线图 ax.plot(angles, values, ... -
Matplotlib——数据可视化plt.plot、plt.figure、
2020-03-23 10:03:46数据可视化函数plt.plot(x,y,ls,lw,c,marker,markersize,markeredgecolor,markerfacecolor,label) 设置画线的标准和形式 参数说明: **x:**横坐标;**y:**纵坐标;**ls或linestyle:**线的形式(‘-’,‘–’,... -
fig = plt.figure(),plt.subplots()的作用
2022-01-03 16:42:52参考多个知乎回答 matplotlib刨根问底系列之二:再谈Figure和Axes的区别 - 有风吹过山峰的文章 - 知乎 python matplotlib中axes与axis的区别是什么?...fig = plt.figure()作用就是生成一个图框,但 -
python-plt.xticks与plt.yticks
2021-05-07 13:26:26plt.figure(figsize=(10, 10)) for i in range(25): plt.subplot(5, 5, i+1) plt.xticks([]) plt.yticks([]) plt.grid(False) plt.imshow(train_images[i], cmap=plt.cm.binary) plt.xlabel(class_names[train... -
plt.subplot(),plt.plot(),plt.xlim()详解
2021-09-02 12:03:04使用plt.subplot来创建小图. plt.subplot(221)表示将整个图像窗口分为2行2列, 当前位置为1. plt.subplot(221)表示第一行的左图 plt.subplot(222)表示将整个图像窗口分为2行2列, 当前位置为2. plt.subplot(222) #... -
python作图之plt.contour详解
2021-12-04 15:54:32plt.contour是python中用于画等高线的函数,这里介绍一下plt.contour的使用。 文章目录使用示例plt.contour()函数本身plt.contour()图中的坐标叮! 使用示例 import numpy as np import matplotlib.pyplot as plt ... -
python plt调整子图间隔
2022-03-29 10:11:06plt.subplots_adjust(left=None, bottom=None, right=None, top=None, \ wspace=None, hspace=0.45) 说明: plt.tight_layout() 使子图紧凑排放 wspace: 调整子图左右之间的距离 hspa... -
PLT转DXF(CAD格式)或PDF
2012-04-17 16:23:10PLT转DXF(CAD格式)或PDF;设计院发的plt文档,转为DXF,然后再用cad打开可转为dwg(cad格式);十分好用,本人亲测的; -
plt.xscale、plt.yscale将 x轴 和 y轴 的比例设置为对数比例
2021-05-24 11:30:30plt.grid(True) plt.gca().xaxis.grid(True, which='minor') # minor grid on too plt.subplot(312) plt.plot(y, x) plt.yscale('symlog') plt.ylabel('symlogy') plt.subplot(313) plt.plot(x, np.sin(x / 3.0)) ... -
plt.plot 参数
2020-12-10 05:05:09图例 Legend、网格 Grid,刻度 tick,点 Markers,边框线 Spines,标签 Label设置行标签与列标签:plt.xlabel('随机变量:表白第k次才首次成功')5.设置标题:plt.title('几何分布:p=%.2f' % p)6.绘制图形:p... -
plt 绘图 知识点整理
2018-08-22 10:57:05plt.xticks()/plt.yticks()设置轴记号 现在是明白干嘛用的了,就是人为设置坐标轴的刻度显示的值。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #... -
matplotlib.pyplot plt绘图颜色大全,及plt.plot()的使用
2022-05-16 18:15:34plt颜色大全 plt.plot()的使用,简单例子 X = np.linspace(1, 20, 10) #[1 3 5 7 9 11 13 15 17 19] [2 4 6 8 10 12 14 16 18 20] Y = np.sin(X) plt.plot(X, Y, color = "blue", linewidth=2, linestyle="-", ... -
Python 用plt做动画
2022-01-26 03:44:33plt.cla() 表示清除当前轴 plt.clf() 表示清除当前数字 plt.ion()用于打开交互模式 plt.ioff()用于关闭交互模式 plt.close()表示关闭一个窗口 plt.gca() 表示获取当前轴 plt.gcf() 表示获取当前图 fig, ax...