【Python画图01】一张图上两条线,坐标图例设置

一、学习背景

最近在学习python制图,准备做个模板好出图

目录

  • 一、学习背景
  • 二、参考
  • 三、代码学习
    • 1.figure语法说明
    • 2. 一张图上2条线
    • 3. 坐标轴取值范围、坐标轴标题、坐标轴小标
    • 4.修改坐标轴位置
    • 5.加入图例

二、参考

这个学习系列都参考了B站UP主的视频《【莫烦Python】Matplotlib Python 画图教程》,我是将他的代码重新输入下来后加入了自己的注释和理解,感恩

三、代码学习

1.figure语法说明

figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)
num: 图像编号或名称,数字为编号 ,字符串为名称
figsize:  指定figure的宽和高,单位为英寸;
dpi  参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80 1英寸等于2.5cm,A4纸是 21*30cm的纸张
facecolor:  背景颜色
edgecolor:  边框颜色
frameon:  是否显示边框
import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-1,1,50)
y=2*x+1
plt.plot(x,y)
plt.show()

【Python画图01】一张图上两条线,坐标图例设置_第1张图片

2. 一张图上2条线

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-3,3,50) #生成(-3,3)的50个点
y1=2*x+1
y2=x**2

plt.figure()  #创建图像
plt.plot(x,y1) #绘制图像

plt.figure(num=3,figsize=(8,5)) #创建图像
plt.plot(x,y2)
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--') #绘制第2条线

plt.show()

【Python画图01】一张图上两条线,坐标图例设置_第2张图片

3. 坐标轴取值范围、坐标轴标题、坐标轴小标

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-3,3,50) #生成(-3,3)的50个点
y1=2*x+1
y2=x**2

plt.figure()  #创建图像
plt.plot(x,y1) #绘制图像

plt.figure(num=3,figsize=(8,5)) #创建图像
plt.plot(x,y2)
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--') #绘制第2条线

plt.xlim((-1,2)) #X轴的数值范围
plt.ylim((-2,3)) #Y轴的数值范围
plt.xlabel('This is x') #x轴的标题
plt.ylabel('This is y') #y轴的标题

#设置小标签
new_ticks=np.linspace(-1,2,5)
print(new_ticks)
plt.xticks(new_ticks)  #将x轴的小标签设置为刚定义的数字
plt.yticks([-2,-2.5,-3],
           ['good','normal','bad'])  #设置y轴上的小标签,文字对应相应的数字



plt.show()

【Python画图01】一张图上两条线,坐标图例设置_第3张图片

也可以尝试修改字体

plt.yticks([-2,-2.5,-3],
           [r'$good\ job$',r'$normal\ job$',r'$bad\ job$'])  #设置y轴上的小标签,文字对应相应的数字,r$$用来设置字体,\能使计算机读到空格

【Python画图01】一张图上两条线,坐标图例设置_第4张图片
数学alpha:使用转义字符
【Python画图01】一张图上两条线,坐标图例设置_第5张图片

4.修改坐标轴位置

gca: get current axis
ax : 画框的轴
确定x轴:xaixs

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-3,3,50) #生成(-3,3)的50个点
y1=2*x+1
y2=x**2

plt.figure()  #创建图像
plt.plot(x,y1) #绘制图像

plt.figure(num=3,figsize=(8,5)) #创建图像
plt.plot(x,y2)
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--') #绘制第2条线

plt.xlim((-1,2)) #X轴的数值范围
plt.ylim((-2,3)) #Y轴的数值范围
plt.xlabel('This is x') #x轴的标题
plt.ylabel('This is y') #y轴的标题

#设置小标签
new_ticks=np.linspace(-1,2,5)
print(new_ticks)
plt.xticks(new_ticks)  #将x轴的小标签设置为刚定义的数字
plt.yticks([-2,-2.5,-3],
           [r'$good\ \alpha$',r'$normal\ job$',r'$bad\ job$'])  #设置y轴上的小标签,文字对应相应的数字,r$$用来设置字体,\能使计算机读到空格

ax=plt.gca()
ax.spines['right'].set_color('none') #将右边和上边的轴的颜色设置为无色
ax.spines['top'].set_color('none') 
ax.xaxis.set_ticks_position('bottom') #将bottom设为x轴
ax.yaxis.set_ticks_position('left') #将bottom设为x轴
ax.spines['bottom'].set_position(('data',0)) #x轴的原点取在数值为0上
ax.spines['left'].set_position(('data',0)) #y轴的原点取在数值为0上


plt.show()

【Python画图01】一张图上两条线,坐标图例设置_第6张图片

5.加入图例

显示图例:
lebal:每条线想要显示什么字
loc:自动寻找放置图例的最佳位置

plt.legend(labels=['aaa','bbb'],loc='best') #显示图例

总体的代码

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-3,3,50) #生成(-3,3)的50个点
y1=2*x+1
y2=x**2



plt.figure(num=3,figsize=(8,5)) #创建图像
plt.plot(x,y2,label='up') #绘制图像并设置线条名称up
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--',label='down') #绘制第2条线并设置线条名称down

plt.xlim((-1,2)) #X轴的数值范围
plt.ylim((-2,3)) #Y轴的数值范围
plt.xlabel('This is x') #x轴的标题
plt.ylabel('This is y') #y轴的标题

#设置小标签
new_ticks=np.linspace(-1,2,5)
print(new_ticks)
plt.xticks(new_ticks)  #将x轴的小标签设置为刚定义的数字
plt.yticks([-2,-2.5,-3],
           [r'$good\ \alpha$',r'$normal\ job$',r'$bad\ job$'])  #设置y轴上的小标签,文字对应相应的数字,r$$用来设置字体,\能使计算机读到空格

plt.legend(labels=['aaa','bbb'],loc='best') #显示图例

ax=plt.gca()
ax.spines['right'].set_color('none') #将右边和上边的轴的颜色设置为无色
ax.spines['top'].set_color('none') 
ax.xaxis.set_ticks_position('bottom') #将bottom设为x轴
ax.yaxis.set_ticks_position('left') #将bottom设为x轴
ax.spines['bottom'].set_position(('data',0)) #x轴的原点取在数值为0上
ax.spines['left'].set_position(('data',0)) #y轴的原点取在数值为0上


plt.show()

【Python画图01】一张图上两条线,坐标图例设置_第7张图片

你可能感兴趣的:(python基本操作,python,matplotlib,numpy)