python基础之数据可视化matplotlib

      数据可视化图标的绘制需要安装matplotlib库,安装方法:cmd下pip install matplotlib,以及numpy库,安装法法:cmd下pip install numpy。使用numpy生产图像绘制需要的数据,如果已经有了数据可以读取数据到数组等,再通过import matplotlib.pyplot as plt导入plt对数据进行绘制等相关操作。

     plt中常用参数的含义:ls表示绘制的线的类型,lw(linewidth)表示绘制线的宽度,label这条线的名字,color或者c表示颜色,weight表示字体属性,alpha表示颜色的浓度,loclabel标签的位置。简单的示例如下:

import matplotlib.pyplot as plt
import numpy as np
#1从0-10中取100个点数
x=np.linspace(0,10,100)
y=np.random.rand(100)
y1=np.sin(x)
# 绘制线
plt.plot(x,y1,ls='-',lw=2,label='plot figure')
#绘制点
plt.scatter(x,y,label='scatter figure')
#背景网格刻制'-'实线,':'虚线以及其他一下线
plt.grid(linestyle=":",color="r")
#注释文本添加,有指向,通过xy来确定指向位置,xytext确定文本位置
plt.annotate(u"zhushi",xy=(np.pi/4,1.0),xytext=((np.pi/2)+1.0,.8),weight='bold',color='b',arrowprops=dict(arrowstyle='->',connectionstyle='arc3',color='b'))
#注释文本添加,无指向,通过制定x,y的坐标来确定显示位置
plt.text(3.10,0.09,'y=sin(x)',weight='bold',color='b')
#绘制水平竖直参考区域
plt.axhspan(ymin=0.0,ymax=0.5,facecolor='y',alpha=0.3)
plt.axvspan(xmin=4.0,xmax=6.0,facecolor='y',alpha=0.3)
#水平竖直参考线
plt.axhline(y=0.0,c='r',ls='--',lw=2)
plt.axvline(x=4.0,c='b',ls='-',lw=2)
# 添加标题
plt.title('y=sin(x)')
#控制label的显示的位置	upper right,upper left,lower left,lower right,right,center left,center right,lower center,upper center,center
plt.legend(loc='lower right')
plt.legend(loc='upper left')
#设置xlabel和ylabel的长度
plt.xlim(0,10)
plt.ylim(-1,1)
#设置坐标的标签文本
plt.xlabel("x")
plt.ylabel("y")
#显示绘制的图像
plt.show()

      如果直接在plt绘制的相关操作中输入中文的话,会不能识别,解决方法如下:

import matplotlib as mpl
mpl.rcParams["font.sans-serif"]=["FangSong"]#设置字体
mpl.rcParams["axes.unicode_minus"]=False#坐标轴轴线刻度标签

     柱状图绘制:

import matplotlib.pyplot as plt
import numpy as np
x=[1,2,3,4,5,6,7,8]
y=[3,1,9,5,8,2,9,10]
#绘制柱状图
plt.bar(x,y,align='center',color='b',tick_label=['a','b','c','d','e','f','g','h'],hatch='/',alpha=0.5)
#柱状图旋转90度后的条形图
plt.barh(x,y,align='center',color='b',tick_label=['a','b','c','d','e','f','g','h'],hatch='/',alpha=0.5)
plt.xlabel("物品")
plt.ylabel("数量")
plt.show()

      在柱状图的基础上实现柱状图的堆积和分块:不同方向的叠加分块要注意叠加分块的方向和距离。

#y方向堆积
plt.bar(x,y,align="center",color="b",tick_label=['A','B','C','D'],label="1")
plt.bar(x,y1,align="center",bottom=y,color="r",label="2")
#水平方向分块
xwidth=0.3
plt.bar(x,y,xwidth,color='c',align='center',label='1',alpha=0.5)
plt.bar(x+xwidth,y1,xwidth,color='b',align='center',label='2',alpha=0.5)

      直方图绘制:

import matplotlib.pyplot as plt
import numpy as np
box=np.random.randint(0,10,100)
plt.hist(box,bins=range(0,11,1),color='g',edgecolor='black',histtype='bar',rwidth=1,alpha=0.5)
plt.xlabel("物品")
plt.ylabel("数量")
plt.show()

          饼状图绘制:

import matplotlib.pyplot as plt
kinds="A","B","C","D"
colors=["#188eb6","#377eb8","#4daf4a","#984ea3"]
#每一个对应的占比
soldNums=[0.35,0.1,0.3,0.25]
plt.pie(soldNums,labels=kinds,autopct="%3.1f%%",startangle=0,colors=colors)
plt.show()

 极线图绘制:

import matplotlib.pyplot as plt
import numpy as np
theta=np.linspace(0.0,2*np.pi,12,endpoint=False)
r=30*np.random.rand(12)
plt.polar(theta,r,color="b",lw=2,marker="*",mfc="b",ms=10)
plt.show()

       折线图绘制:

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0.5,2*np.pi,20)
y=np.random.randn(20)
plt.stem(x,y,linefmt=":",markerfmt="c",basefmt="-")
plt.show()

      误差图绘制:

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0.1,0.6,6)
y=np.exp(x)
plt.errorbar(x,y,fmt="bo:",xerr=0.02,yerr=0.2)
plt.show()

      阶梯图绘制:

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(1,10,10)
y=np.sin(x)
plt.step(x,y,color="r",lw=2,where='pre')#where=post,pre,mid
plt.xticks(range(1,11,1))
plt.show()

      图形绘制:

import matplotlib.pyplot as plt
import numpy as np
score1=np.random.randint(0,100,10)
score2=np.random.randint(0,100,10)
x=[score1,score2]
colors=['#8dd3c7','#bebada']
labels=['A','B']
bins=range(0,101,10)
#histtype选择绘制的图形, histtype={‘bar’, ‘barstacked’, ‘step’, ‘stepfilled’}
#stacked=True位叠加的直方图,等于False位分块的直方图
plt.hist(x,bins=bins,color=colors,histtype='bar',rwidth=10,stacked=True,label=labels)
plt.legend(loc="upper left")
plt.show()

如果多次引用画布,会造成图像叠加,可以通过plt.clf()清除,或者每次用之前先创建,用完再关闭plt.figure(),plt.close()

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值