- 一、绘制三角函数
- 1.1快速创建三角函数:
- 1.2 重构(修改颜色和线宽)
- 1.3 重构(调整坐标)
- 1.4 重构(刻度修改)
- 1.5 重构(刻度修改为π)
- 1.6 把坐标轴放在中间
- 1.7 添加图例
- 1.8 添加特殊点注释
- 1.9 细节修改(设置X轴Y轴 坐标刻度标签字体细节)
- 1.10 完整代码
- 二、绘制条形图
- 2.1 绘制完整条形图:
- 2.2 创建两块画板绘制图形
- 2.3导入csv文件可视化
- 2.4 从网络中加载数据并可视化
一、绘制三角函数
1.1快速创建三角函数:
用到了Matplotlib和numpy模块,linspace在(-π,π)之间绘制。
代码:
import matplotlib.pyplot as plt
import numpy as np
X = np.linspace(-np.pi,np.pi,256,endpoint = True) #np.linspace在(-π,π)之间分成256小段,并赋予X
(C,S) = np.cos(X),np.sin(X) #C,S 分别是cosine/sine 的值(X,C,S都是numpy数组))
plt.plot(X,C)
plt.plot(X,S)
plt.show()
1.2 重构(修改颜色和线宽)
plt.plot(X,C,'b-',lw=2.5) # b- 是'color=blue','linestyle= -'简写 plt.plot(X,S,'r-',lw=2.5) # r- 是'color=red',lw = linewidth
1.3 重构(调整坐标)
plt.xlim(X.min()*1.5,X.max()*1.5) #将X,Y轴放大1.5倍
plt.ylim(C.min()*1.5,C.max()*1.5)
1.4 重构(刻度修改)
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi])
plt.yticks([-1,0,1])
1.5 重构(刻度修改为π)
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],
[r'$-\pi$',r'$-\pi/2$',r'$0$',r'$\pi/2$',r'$+\pi$'])
plt.yticks([-1,0,1])
1.6 把坐标轴放在中间
ax = plt.gca() #通过plt.gca()获取当前的Axes对象 ax
ax.spines['right'].set_color('none') #先把右边和上边的边界设置为不可见
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom') #下边界移动到0点
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left') #左边界移动到0点
ax.spines['left'].set_position(('data',0))
1.7 添加图例
plt.plot(X,C,'b-',lw=2.5,label='cosine')
plt.plot(X,S,'r-',lw=2.5,label='sine')
plt.legend(loc = 'upper
1.8 添加特殊点注释
t=2*np.pi/3
plt.plot([t,t],[0,np.cos(t)],color='blue',linewidth=2.5,linestyle='--') #画出需要标注的蓝色的线
plt.scatter([t,],[np.cos(t),],50,color='blue') #画出需要标注的蓝色的点
plt.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'))
plt.plot([t,t],[0,np.sin(t)],color='red',linewidth=2.5,linestyle='--') #画出需要标注的红色的线
plt.scatter([t,],[np.sin(t),],50,color='red') #画出需要标注的红色的点
plt.annotate(r'$\sin(\frac{2\pi}{3}) = \frac{3}{2}$', #给红色的点添加注释
xy =(t,np.sin(t)),
xycoords = 'data',
xytext = (+10,+30),
textcoords = 'offset points',
fontsize = 16,
arrowprops = dict(arrowstyle ='->',
connectionstyle = 'arc3,
rad = .2')
)
1.9 细节修改(设置X轴Y轴 坐标刻度标签字体细节)
for label in ax.get_xticklabels()+ax.get_yticklabels():
label.set_fontsize(18)
label.set_bbox(dict(facecolor = 'w',edgecolor = 'None',alpha = 0.4))
1.10 完整代码
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
▶ np.linspace 在 ( - π,π ) 之间分成 256 小段,并赋予 X
X = np.linspace(-np.pi, np.pi, 256, endpoint=True)
(C, S) = np.cos(X), np.sin(X) # C,S分别是 cosine/sine 的值( X,C,S 都是 numpy 数 组))
plt.figure(figsize = ((8,6))) # 设置画布大小(可省略)
▶调整线宽和颜色
plt.plot(X,C,'b-',lw=2.5) # b - 是 'color=blue','linestyle= - '
简写 plt.plot(X,S,'r-',lw=2.5) # r - 是 'color=red' ,lw = l inewidth
▶(调整坐标)
plt.xlim(X.min()*1.5,X.max()*1.2) # 将 X,Y轴放大 1.2 倍
plt.ylim(C.min()*1.5,C.max()*1.2)
▶添加图例
plt.plot(X,C,'b-',lw=2.5,label='cosine')
plt.plot(X,S,'r-',lw=2.5,label='sine')
▶(刻度修改)
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],
[r'$-\pi$',r'$-\pi/2$',r'$0$',r'$\pi/2$',r'$+\pi$']) #(刻度修改为π)
plt.yticks([-1,0,1])
▶把坐标轴放在中间
ax = plt.gca() # 通过 plt.gca() 获取当前的 Axes 对象 ax
ax.spines['right'].set_color('none') # 先把右边和上边的边界设置为不可见
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom') # 下边界移动到 0 点
ax.spines['bottom'].set_position(('data', 0))
ax.yaxis.set_ticks_position('left') # 左边界移动到 0 点
ax.spines['left'].set_position(('data', 0))
▶添加特殊点注释
t=2*np.pi/3
plt.plot([t,t],[0,np.cos(t)],color='blue',linewidth=2.5,linestyle='--') # 画出需要标注 的蓝色的线
plt.scatter([t,],[np.cos(t),],50,color='blue') # 画出需要标注的蓝色的点
plt.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')
)
plt.plot([t,t],[0,np.sin(t)],color='red',linewidth=2.5,linestyle='--') # 画出需要标注的 红色的线
plt.scatter([t,],[np.sin(t),],50,color='red') # 画出需要标注的红色的点
plt.annotate(r'$\sin(\frac{2\pi}{3}) = \frac{3}{2}$', # 给红色的点添加注释
xy =(t,np.sin(t)),xycoords = 'data',
xytext = (+10,+30),
fontsize = 16,
arrowprops = dict(arrowstyle ='->',
connectionstyle = 'arc3,
rad = .2')
)
▶细节修改 ( 设置 X 轴 Y 轴 坐标刻度标签字体细节 )
for label in ax.get_xticklabels() + ax.get_yticklabels():
label.set_fontsize(18)
'''
set_bbox #为每个刻度设置边框
facecolor # 刻度的背景颜色
edgecolor # 边框颜色
alpha # 背景透明度
'''
label.set_bbox(dict(facecolor='w',edgecolor='None',alpha=0.4))
plt.legend(loc = 'upper left') # 图例位置
二、绘制条形图
2.1 绘制完整条形图:
# encoding:utf - 8
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
fig = plt.figure(1,figsize=((8,6))) # 准备一张白纸 ,设置大小
▶确定绘图的范围,设置绘图范围为1行1列,并输出到第 1 块画布(目前只有一块)
ax1 = plt.subplot(111)
▶确定绘制条形图的参数
data = np.array([15,20,18,25]) # 准备输出的数据
width = 0.5
x_bar = np.arange(4)
▶核心图形绘制 ( 通过 plt.bar() 绘制条形图 )
rect = ax1.bar(x_bar,data,width = width,color = 'lightblue')
▶向各条形图上添加数据标签
for rec in rect:
x = rec.get_x()
height = rec.get_height()
ax1.text(x+0.2,1.01*height,str(height)+'W') # X 轴 /Y 轴写文字位置
▶绘制 X , Y 轴坐标刻度及标签,标题
ax1.set_xticks(x_bar) # 设置 X 轴刻度
ax1.set_xticklabels(('第一季度','第二季度','第三季度','第四季度'))
ax1.set_ylabel('销售量(单位:万)')
ax1.set_title('2017 年季度销售量统计')
ax1.grid(True) # 显示网格
ax1.set_ylim(0,28) # 增加留白