孤影常伴灯,你在夜里写字,我在昏黄中布景。风吹皱那烟波浩渺的迷离,也想吹散关于你的记忆。你在红尘打坐,我在紫陌修佛。万般皆因果,何须嗔叹?
闲来无事,索然无趣,忽而兴起,画几个简单的数据分析图。。。
一、将数据生成柱状图
代码:
#-*-coding:utf-8-*-
"""
柱状图
"""
import numpy as np
import matplotlib.pyplot as mp
apples = np.array([93,45,76,39,66,52,39,46,52,34])
oranges = np.array([98,14,45,93,84,52,34,85,63,85])
#横坐标
x = np.arange(apples.size)
#设置框图名 和 背景色
mp.figure('Bar_zhengsixu',facecolor='lightgray')
#设置 柱状图标题
mp.title('Bar Chart')
#设置 横坐标名称
mp.xlabel('Month')
#设置 纵坐标名 和 字体大小
mp.ylabel('Volumn',fontsize=14)
#生成柱状图
mp.bar(x-0.2,apples,0.4,color='dodgerblue',label='Apple',align='center')
mp.bar(x+0.2,oranges,0.4,color='orangered',label='Orange',align='center')
#修改水平刻度文本
mp.xticks(x,['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'])
mp.legend()
mp.show()
呈现效果:
二、将数据生成饼状图
#-*-coding:utf-8-*-
"""
饼状图
"""
import numpy as np
import matplotlib.pyplot as mp
labels = ['Python','Javascript','C++','Java','PHP']
values = [26,17,21,29,11]
spaces = [0.05,0.01,0.01,0.01,0.01]
colors= ['dodgerblue','orangered','limegreen','violet','gold']
mp.figure('Pie Chart',facecolor='lightgray')
mp.title('Languages PR')
mp.axis('equal') #等轴比例显示正圆
mp.pie(values,spaces,labels,colors,'%.1f%%',shadow=True,startangle=45,radius=1)
mp.legend(loc='upperleft')
mp.show()
呈现效果:
三、填充两条波动曲线的别区域
代码:
#-*-coding:utf-8-*-
"""
填充
"""
import numpy as np
import matplotlib.pyplot as mp
x = np.linspace(0,8*np.pi,1000)
sinx = np.sin(x)
cosx = np.cos(x/2) / 2
mp.figure('Fill',facecolor='lightgray')
mp.title('Fill')
mp.plot(x,sinx,color='dodgerblue',label='sinx',linewidth=2)
mp.plot(x,cosx,color='orangered',label='cosx',linewidth=2)
#绘制填充
mp.fill_between(x,sinx,cosx,sinx>cosx,color='dodgerblue',alpha=0.5)
mp.fill_between(x,sinx,cosx,sinx<cosx,color='orangered',alpha=0.5)
mp.legend()
mp.show()
呈现效果:
四、生成等高线图
代码:
#-*-coding:utf-8-*-
"""
等高线
"""
import numpy as np
import matplotlib.pyplot as mp
n = 1000
#网格化处理 将x,y 变为二维矢量
x,y = np.meshgrid(np.linspace(-3,3,n),np.linspace(-3,3,n))
print(x.shape,y.shape)
# 根据一个奇妙的公式算出每个坐标点的高度值z
z = (1 - x/2 + x**5 + y**3) * \
np.exp(-x**2 - y**2)
#绘制等高线
mp.figure('Contour',facecolor='lightgray')
mp.title('Contour')
mp.grid(linestyle=':')
cntr = mp.contour(x,y,z,8,colors='lightgray',linewidths=1)
mp.clabel(cntr,inline_spacing=1,fmt='%.1f',fontsize=15)
#等高线的填充
mp.contourf(x,y,z,8,cmap='jet')
mp.show()
呈现效果:
五、热成像图显示矩阵
代码:
#-*-coding:utf-8-*-
"""
热成像图显示矩阵
"""
import numpy as np
import matplotlib.pyplot as mp
n = 1000
#网格化处理 将x,y 变为二维矢量
x,y = np.meshgrid(np.linspace(-3,3,n),np.linspace(-3,3,n))
print(x.shape,y.shape)
# 根据一个奇妙的公式算出每个坐标点的高度值z
z = (1 - x/2 + x**5 + y**3) * \
np.exp(-x**2 - y**2)
#绘制
mp.figure('Imshow',facecolor='lightgray')
mp.title('Imshow')
mp.grid(linestyle=':')
#等高线的填充
mp.imshow(z,cmap='jet',origin='lower')
mp.show()
呈现效果:
六、三维散点图
代码:
#-*-coding:utf-8-*-
"""
三维散点图
"""
import numpy as np
import matplotlib.pyplot as mp
from mpl_toolkits.mplot3d import axes3d
n = 500
#标准正态分布 期望为0 标准差为 1
x = np.random.normal(0,1,n)
y = np.random.normal(0,1,n)
z = np.random.normal(0,1,n)
mp.figure('3D scatter')
ax3d = mp.gca(projection='3d')
#离中心点位置大小
d = x**2 + y**2 + z**2
ax3d.scatter(x,y,z,s=70,c=d,alpha=0.7)
ax3d.set_xlabel('x')
ax3d.set_ylabel('y')
ax3d.set_zlabel('z')
mp.tight_layout()
mp.show()
呈现效果:
七、三维曲面图
代码:
#-*-coding:utf-8-*-
"""
三维曲面图
"""
import numpy as np
import matplotlib.pyplot as mp
from mpl_toolkits.mplot3d import axes3d
n = 1000
#网格化处理 将x,y 变为二维矢量
x,y = np.meshgrid(np.linspace(-3,3,n),np.linspace(-3,3,n))
# 根据一个奇妙的公式算出每个坐标点的高度值z
z = (1 - x/2 + x**5 + y**3) * \
np.exp(-x**2 - y**2)
#绘制
mp.figure('3D Surface',facecolor='lightgray')
mp.title('3D Surface')
ax3d = mp.gca(projection='3d')
ax3d.plot_surface(x,y,z,rstride=20,cstride=20,cmap='jet')
mp.show()
呈现效果:
八、三维线框图
代码:
#-*-coding:utf-8-*-
#-*-coding:utf-8-*-
"""
三维线框图
"""
import numpy as np
import matplotlib.pyplot as mp
from mpl_toolkits.mplot3d import axes3d
n = 1000
#网格化处理 将x,y 变为二维矢量
x,y = np.meshgrid(np.linspace(-3,3,n),np.linspace(-3,3,n))
# 根据一个奇妙的公式算出每个坐标点的高度值z
z = (1 - x/2 + x**5 + y**3) * \
np.exp(-x**2 - y**2)
#绘制
mp.figure('3D Surface',facecolor='lightgray')
mp.title('3D Surface')
ax3d = mp.gca(projection='3d')
ax3d.plot_wireframe(x,y,z,rstride=20,cstride=20,cmap='jet',linewidth=1, color='dodgerblue')
mp.show()
呈现效果:
九、画阿基米德螺旋线+玫瑰线(极坐标系)
代码:
#-*-coding:utf-8-*-
"""
极坐标系 画阿基米德螺旋线+玫瑰线
"""
import numpy as np
import matplotlib.pyplot as mp
mp.figure('Polar',facecolor='lightgray')
mp.gca(projection='polar')
mp.title("Polar")
mp.xlabel(r'$\theta$',fontsize=14)
mp.ylabel(r'$\rho$',fontsize=14)
mp.grid(linestyle=':')
#绘制阿基米德螺旋线
t = np.linspace(0,4*np.pi,1000)
r = 0.8 * t
mp.plot(t,r)
#绘制玫瑰线
x = np.linspace(0, 6*np.pi, 1000)
y = 3*np.sin(6*x)
mp.plot(x, y)
mp.show()
呈现效果:
陌生的城市,暖风拂面,柳絮飘飞;夜色轻柔,心情激荡;窗外的风,空中的星,闪闪摇曳,触痛我跳动的心。