开始之前需要导入三个包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
生成图表的方式
1直接生成
plt.plot(np,random.rand(100))
plt.show()
2 使用魔法函数可以直接出图,十分方便
%matplotlib inline
plt.plot(np.random.rand(10))
常用的参数配置
data=np.random.rand(25)
data1=np.random.rand(20)
plt.plot(data,labels='data')
plt.xlable('hahah') #添加行标签
plt.ylable('wiuichen') #添加列标签
plt.title('jjjjjj',y=1.05,fontsize=20) #添加标题,确定标题距离图表的距离,和大小
plt.plot(data1,labels='data1')
plt.legend(loc=0) #添加图例,loc=0是系统自己决定一个最佳位置,
可选择。效果是这样的
线的样式设计
data2=np.random.rand(25)
plt.plot(data,color='r',linestyle='--',marker='o')
plt.plot(data1,color='b',linestyle='-.',marker='^')
plt.plot(data2,color='y',lw=1,marker='o')
plt.grid()
#显示网格,color确定线的位置,linestyle确定线的风格,marker确定折点的形状,lw确定线的宽度。效果图
常见的图表1条形图
x=[1,5,6,8,8]
y=[5,8,5,3,7]
plt.bar(x,y,color='r')效果图
x=[1,5,6,8,8]
y=[5,8,5,3,7]
plt.barh(x,y,color='b')效果图
y1=[1,3,5,7,9]
plt.bar(x,y)
plt.bar(x,y1,bottom=y,color='r')柱状堆叠图2直方图
data3=np.random.randn(1000)
plt.hist(data3,color='g',bins=12) #bins控制直方图中直方的数量
plt.figure(figsize=(10,9)) #控制画布大小
x=np.random.randint(1,100,100)
x
bins=[0,10,20,30,40,50,60,70,80,90,100] #控制行标签的跨度。
plt.hist(x,bins)
plt.grid()3箱型图和散点图
data=np.random.rand(1000)
plt.boxplot(data)
plt.grid()
plt.figure(figsize=(10,6))
x=np.random.rand(1000)
y=np.random.rand(1000)
x1=np.random.randn(1000)
y1=np.random.randn(1000)
plt.scatter(x1,y1)
plt.grid()4堆积图
comp=[1,2,3,4]
y1=[55,66,77,88]
y2=[48,58,64,76]
y3=[30,36,39,49]
y4=[69,87,96,120]
labels=['小米','华为','vivo','oppo']
plt.stackplot(comp,y1,y2,y3,y4,labels=labels)
plt.legend()
plt.xticks([1,2,3,4],['one','two','three','fouer'])
plt.grid()5饼图绘制
plt.figure(figsize=(8,8))
size=[15,30,45,100]
labels=['小米','华为','vivo','oppo']
plt.pie(size,labels=labels,autopct='%1.1f%%',explode=(0.0,0.0,0.0,0.1),startangle=90,shadow=True)
plt.grid()
#autopct='%1.1f%%'是为了显示饼图中的数字,explode是为了控制哪个图分离,startangle是为了饼图的显示
shadow是显示阴影。
多图绘制
plt.figure(figsize=(8,8))
x=[1,2,3,4]
y=[2,4,3,7]
y1=[5,8,3,6]
plt.subplot(2,2,1)
plt.plot(x,y)
plt.subplot(2,2,2)
plt.bar(x,y1)
plt.subplot(2,1,2)
plt.pie(y1)样式
matplotlib中有很多现成的样式,不需要我们调节
查看方式是:
plt.style.available
可以看到样式有很多,连r语言绘图工具ggplot都具备,这很强大,对于我这样懒人来说就是很好的福利了,具体怎么使用呢
plt.style.use('ggplot')
#plt.pie(y1)
plt.plot(x,y)
plt.text(2,4,'top')
plt.annotate('last top',(3.5,5),(3,6),arrowprops=dict(facecolor='grey'))
#plt.text是插入注解,plt.annotate不仅可以插入注解,还可以插入箭头等。面向对象绘图
fig,ax=plt.subplots(2,2,figsize=(10,10))#生成一个2行2列的空画布
ax[0][0].plot(x)
ax[0][1].hist(x)
ax[1][0].pie(np.abs(x[:5]))效果图
第二种办法
fig=plt.figure(figsize=(10,10))
ax1=fig.add_subplot(2,2,1)
ax2=fig.add_subplot(2,2,2)
ax3=fig.add_subplot(2,1,2)
ax1.plot(x)
ax2.plot(np.abs(x[:4]))
ax1.axhline(-20,color='r',lw=0.51)#插入直线这是使用fivethirtyeight风格画的图
面向对象绘图时添加标签
fig,ax=plt.subplots()
ax.hist(x)
ax.set_xlabel('wuyuchen')
ax.set_ylabel('wwwwwww')
ax.set_title('tianli ',fontsize=18)
ax.set_xticks([0,5,10])
ax.set_xticklabels(['low','med','high'])共享x轴
x=[1,2,3,4]
y=[4,5,8,9]
y1=[3,6,2,5]
fig,ax=plt.subplots(2,1,sharex=True)
ax[0].bar(x,y)
ax[0].bar(x,y1,bottom=y1)
ax[1].plot(x,y)
十分感谢 @日月光华 老师。