# 导入 matplotlib 的所有内容(nympy 可以用 np 这个名字来使用)
from pylab import *
# 创建一个 8 * 6 点(point)的图,并设置分辨率为 80
figure(figsize=(8,6), dpi=80)
# 创建一个新的 1 * 1 的子图,接下来的图样绘制在其中的第 1 块(也是唯一的一块)
subplot(1,1,1)
X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(X), np.sin(X)
# 绘制余弦曲线,使用蓝色的、连续的、宽度为 1 (像素)的线条
plot(X, C, color="blue", linewidth=1.0, linestyle="-")
# 绘制正弦曲线,使用绿色的、连续的、宽度为 1 (像素)的线条
plot(X, S, color="green", linewidth=1.0, linestyle="-")
# 设置横轴的上下限
xlim(-4.0,4.0)
# 设置横轴记号
xticks(np.linspace(-4,4,9,endpoint=True))
# 设置纵轴的上下限
ylim(-1.0,1.0)
# 设置纵轴记号
yticks(np.linspace(-1,1,5,endpoint=True))
# 以分辨率 72 来保存图片
# savefig("exercice_2.png",dpi=72)
# 在屏幕上显示
show()
x and y must have same first dimensition,but have shapes (4,) and (6,)
'-', '--', '-.', ':', 'None', ' ', '', 'solid', 'dashed', 'dashdot', 'dotted'
r表示不需要转义,raw(生的),LATEX用法,python中使用latex,需要在文本的后面加上$,\pi会转义为pi
xticks(lis,[r'$-\pi$',r'$-\pi/2$',r'$0$',r'$-\pi$',r'$-\pi$'])
后面数组中的每一个元素都与前面元素一一对应
matplotlib的图中,默认有四个轴,两个横轴和两个竖轴,通过ax.plt.gca()方法获取,gca是get current axes的缩写(axes是轴的意思)
总共有四个轴:top,bottom,left,right
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
将会看见top和right边被隐藏
一定一定要注意,spines后面是[]而非(),set_position後面是()
我對此的理解為:[]表示选择,ax在gca()时已经初始化了,[]是在top,bottom,left和right中的选择;()表示需补充参数,参数未经过初始化
区分选择和补充的含义
data:移动轴的位置到交叉轴的指定坐标
outward:不太懂
axes:0.0~1.0之间的值,整个轴上的比例
center:(‘axes’,0.5)
zero:(‘data’,0.0)
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
由上图可看出,这个轴其实不是坐标轴,而是图形的边界
我认为:top和right的轴是图形的边界,不能够改变坐标轴
而left和bottom可以改变坐标轴的位置,参数如上图所示
在plot函数中以[键-值] 的形式增加一个参数
plot(X,S,color="blue",linewidth=2.5,linestyle="-",lable="图例名称")
legend(loc="位置")
legend位置参数:upper,bottom,left,right
loc:图例位置
fontsize:字体大小
edgecolor: frame edgecolor
facecolor: frame facecolor
前提:x,y轴包括数值以及大小和颜色
https://www.jb51.net/article/127806.htm
scatter([t,],[np.cos(t),],50,color='blue')
scatter(x,y,[size],[color],[marker])
x,y:形如shape[n,]不全的数组,即添加注释点的位置
size:直接给出点的大小,标量或者形如shape[n,]的数组
color:色彩或颜色序列
marker:markstyle,可选,默认’o’
annotate(s,xy,xytext=None,xycoords='data',textcoords=None)
s:被注释内容
xy:被注释的坐标点,二维元组形如[x,y]
xytext:注释文本的坐标点,也是二维元组,默认与xy相同
xycoords:被注释点的坐标系属性
textcoords设置注释文本的坐标系属性
annotate(r'$sin(\frac{2\pi}{3})'=\frac{\sqrt{3}}{2}$',xy=(t,np.sin(t)),xycoords='data',xytext=(+10,+30),textcoords='offset points')
fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8])
和
fig = plt.figure()
ax = gca()//初始化四个轴
left = bottom = 0.1
right = top = 0.8
ls = [left,bottom,right,top]
for i in ls:
ax.spines[top].set_position(i)
如果两个图片的x轴的范围不同的情况下,放在同一张画布下是不易显示的
figure = plt.figure()
plt.subplot(nrows,ncols,plot_number)
其中nrows表示要划分的行数
ncols表示要划分的列数
plot_number表示当前的子图区
from pylab import *
x = []
y = []
figure = figure((m,n),dpi)//创建一个m*n点的图像
axes1 = figure.add_subplot(2,1,1)//划分为两行,将第一行作为当前需要描绘的子图区
plot(x,y)
x = []
y = []
axes2 = figure.add_subplot(2,1,2)//选取第二块子图区
plot(x,y)
show()
plt.rcParams[‘font.san-serif’]=[‘SimHei’]:SimHei是设置字体为黑体
plt.rcParams[‘axes.unicode_minus’] = False设置字符显示
这个地方的unicode_minus我的理解为减去unicode即为不使用Unicode编码
如果设置为false,则负负得正,使用Unicode编码
import matplotlib
matplotlib.get_gonfigdir()
import matplotlib
matplotlib.matplotlib_fname()
查看:
import matplotlib as mpl
print(mpl.rcParams)
修改:(用中括号去取下标)
import matplotlib
matplotlib.rcParams['具体参数名称'] = xxx
通过matplotlib.rc一次设置多个参数
import matplotlib
matplotlib.rc('lines',linewidth=2,color='red')
rc参数说明:
lines.linewidth:线宽
lines.linestyle:线的风格
lines.color:线的颜色
lines.marker:None 默认标记
lines.markersize:标记大小
lines.antialiased:True 使用抗锯齿渲染:没有缺口
font.family
font.style:normal(roman),italic,oblique
font.variant:normal,small-caps
font.weight:normal,bold,bolder,lighter,100,200,300…900
font.stretch
font.size:默认字体大小,以磅为单位
网格:
grid.color:网格颜色
grid.linestyle:点
grid.linewidth:pt
https://www.cnblogs.com/shuaishuaidefeizhu/p/14035247.html
from pylab import *
figure(figsize=(8,6),dpi=80)
x = np.linspace(-np.pi,np.pi,256,endpoint=True)
y = np.sin(x)
plot(x,y,color='blue',linewidth='10',linestyle='-')
xlim(-4.0,4.0)
ylim(-1.0,1.0)
xticks(np.linspace(-4,4,9,endpoint=True))
yticks(np.linspace(-1.0,1.0,3,endpoint=True))
ax = gca()
ax.spines['right'].set_color('None')
ax.spines['top'].set_color('None')
ax.spines['bottom'].set_position(('axes',0.5))
ax.spines['left'].set_position(('axes',0.5))
show()
from pylab import *
from numpy import *
x = np.linspace(-1,1,66,endpoint=True)
y = x**2
plot(x,y,linestyle='-',lw='10',color='blue')
show()
from pylab import *
fig = figure(figsize=(8,6),dpi=80)#dpi参数是分辨率
fig.add_axes([0.1,0.1,0.8,0.8])
subplot(1,1,1)#创建一个1*1子图,接下来图样的绘制在第一块
x = np.linspace(-np.pi,np.pi,256,endpoint=True)
c,s = np.cos(x),np.sin(x)
plot(x,c,color="blue",linewidth=1.0,linestyle="solid",label="cosine")
plot(x,s,color="green",linewidth=1.0,linestyle="dotted",label="sine")
legend(loc='upper left',fontsize="18")
xlim(-4.0,4.0)
lis = ([-np.pi,-np.pi/2.0,0,np.pi/2.0,np.pi])
#xticks(np.linspace(-4,4,9,endpoint=True))
ylim(-1.0,1.0)
#yticks(np.linspace(-4,4,9,endpoint=True))
#xticks(lis)
xticks(lis,[r'$-\pi$',r'$-\pi/2$',r'$0$',r'$-\pi$',r'$-\pi$'])#r表示不需要转义,raw(生的),LATEX用法,python中使用latex,需要在文本的后面加上$,\pi会转义为pi
yticks(lis)
ax = gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['bottom'].set_position(('axes',0.5))
ax.spines['left'].set_position(('axes',0.5))
t = 2*np.pi/3
plot([t,t],[0,np.cos(t)],color='blue',linewidth=2.5,linestyle='--')
scatter([t,],[np.cos(t),],50,color='blue')
t = 2*np.pi/3
plot([t,t],[0,np.cos(t)], color ='blue', linewidth=2.5, linestyle="--")
scatter([t,],[np.cos(t),], 50, color ='blue')
annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
xy=(t, np.sin(t)), xycoords='data',
xytext=(+10, +30), textcoords='offset points', fontsize=16,
arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
plot([t,t],[0,np.sin(t)], color ='red', linewidth=2.5, linestyle="--")
scatter([t,],[np.sin(t),], 50, color ='red')
annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$',
xy=(t, np.cos(t)), xycoords='data',
xytext=(-90, -50), textcoords='offset points', fontsize=16,
arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
show()
from pylab import *
x = [1,2,3,4,5,6]
y = [3,5,7,1,9,12]
figure = figure(figsize=(8,6),dpi = 80)
axes1 = figure.add_subplot(2,3,1)
axes2 = figure.add_subplot(2,3,2)
axes3 = figure.add_subplot(2,3,3)
axes4 = figure.add_subplot(2,3,4)
axes5 = figure.add_subplot(2,3,5)
axes6 = figure.add_subplot(2,3,6)
axes1.plot(x,y,'ro')
axes2.plot(x,y,'r-*')
axes3.plot(x,y,'bs')
axes4.plot(x,y,'^g-.')
axes5.plot(x,y,'m8')
axes6.plot(x,y,'yd:')
show()
bar(x,height,width,bottom)
(x,height)定义在什么位置上,多高的bar(这个地方的高度其实是条形图的宽度,因为是躺着的,所以叫高度)
width定义bar的宽度(这个地方的宽度是条形图的高度,因为是躺着的,座椅叫做宽度)
bottom定义bar的实际高度(我的理解是bar的实际底在哪里)
height:柱子的高度,y轴上的坐标
width:柱子的宽度,默认值是0.8
bottom:柱子的基准高度,浮点数或者类数组结构,默认值为0
bar orientation:给定的是一个向量,该向量指定单元局部坐标系的纵轴方向
from pylab import *
x = [1,2,3,4,5,6]
y = [2,3,54,6,7,4]
figure = figure(figsize=(8,6),dpi = 80)
bar(x,y)
show()
from pylab import *
x = [1,2,3,4,5,6]
y = [3,5,1,7,9,12]
#x指定其实位置从0开始,bottom指定水平条其实位置为左侧,height指定绘图的水平条的宽度,width指定绘制的水平条的长度,orientation指定要绘制的是水平条,color指定颜色
bar(x=0,bottom=y,height=0.3,width=x,orientation='horizontal',color='red')
show()
在绘制多组条形图进行对比时需要注意一点,bar_width的范围是(0,1)没错,但是多组图表需要保证几组图表的范围之和不超过1(范围之和!和!!和!!!)
```
## 2022/11再复习
1. 导入包
2. ```python
import matplotlib.pyplot as plt
import numpy as np
划分数据,从哪到哪平均分为几份,使用numpy库中的linespace函数
```python x = np.linespace(-1,1,50)
5. 新建图表
6. ```python
plt.figure(num=1,figsize=(8,5),dpi=10)
# figsize用来设置图像大小
# num用来设置图像是第几个,编号为几
设置坐标轴的范围,matplotlib库中的xlim和ylim函数,x-limit和y-limit
```python plt.xlim((-1,2)) plt.ylim((-2,3))
9. 设置坐标轴上单位的小标
10. ```python
# 设置单位的小标
new_ticks = np.linspace(-1,2,5)
plt.xticks(new_ticks)
plt.yticks([-2,-1.8,-1,1.22,3],
[r'$really\ bad$',r'$bad$',r'$normal$',r'$good$',r'$really\ good$'])
设置x轴和y轴的名字,matplotlib库中的xlabel和ylabel
```python plt.xlabel(‘i am x’) plt.ylabel(‘i am y’)
13. 设置单位的小标,使用xticks和yticks来设置横坐标和纵坐标
14. ```python
new_ticks = np.linspace(-1,2,5)
plt.xticks(new_ticks)
gca = ‘get current axis’
```python ax = plt.gca()
ax.spines[‘right’].set_color(‘none’) ax.spines[‘top’].set_color(‘none’)
ax.xaxis.set_ticks_position(‘bottom’) ax.xaxis.set_ticks_position(‘left’)
ax.spines[‘bottom’].set_position((‘data’,0)) ax.spines[‘left’].set_position((‘data’,0))
17. 添加legend图例
18. ```
l1 = plt.plot(x,y2,label='注记名称') # x,y2用来选择某条线
l2 = plt.plot(x,y1,label='注记名称') # 前两个参数可以确定某条线
#legend函数用来画出图例
plt.legend()
# 其中loc=''参数默认是best,会自动选择不会挡住图像的最佳位置
# labels=['1','2'] 图像标注会覆盖掉plt.plot函数中的label
# handles=[]参数会选择要画的线,其中画的线由plt.plot函数赋值
添加Annotation标注,特别标注某个点并给出文字
```python x0 = 1 y0 = 2 * x0 + 1 plt.Scatter(x0,y0,s=50,color=’blue’) # Scatter用来画出点,s用来设置Scatter.size,color用来设置颜色 plt.plot([x0,x0],[y0,0],’k–’,lw=2.5) # [从.x,到.x][从.y,到.y]
22. ```python
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-1,1,50)
y1 = 2*x + 1
y2 = x**2
plt.figure()
# 设置坐标轴的范围
plt.xlim((-1,2))
plt.ylim((-2,3))
# 设置x轴和y轴的名字
plt.xlabel('i am x')
plt.ylabel('i am y')
# 设置单位的小标
new_ticks = np.linspace(-1,2,5)
plt.xticks(new_ticks)
plt.yticks([-2,-1.8,-1,1.22,3],
[r'$really\ bad$',r'$bad$',r'$normal$',r'$good$',r'$really\ good$'])
plt.plot(x,y1)
plt.plot(x,y2)
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',0))
ax.spines['top'].set_position(('data',0))
# 添加legend图例
plt.plot(x,y1,label='2*x+1')
plt.plot(x,y2,label='x**2')
plt.legend()
plt.show()
arr = np array([1,2,3,4,5])
print(arr)
print(type(arr))
from pylab import *
x = np.linspace(-np.pi,np.pi,256,endpoint = True)
c,s = np.cos(x),np.sin(x)