- 折线图(plot)
折线图:一条线用一组x和y的数组,这些数组可以是自定义也可以是从其他文件读入
import matplotlib.pyplot as plt
a=[1,5,3,4,5]
plt.plot(a)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
df=pd.read_excel('.\互联网公司股票.xlsx',parse_date=['日期'],index_col='日期')
df['收盘'].plot()
- 柱形图(bar)
需要数组作为x和y轴的值
import numpy as np
import matplotlib.pyplot as plt
x=[1,2,3]
y=[3,5,8]
plt.bar(x,y)
3. 条形图 (barh)
需要数组作为x和y轴的值
import numpy as np
import matplotlib.pyplot as plt
x=[1,2,3]
y=[3,5,8]
plt.barh(x,y)
4. 堆积图 (bar,barh,stackplot)
1)堆积柱形图
画出一个简单的柱形图,在以画好的图作为底部的基础,继续画图
import numpy as np
import matplotlib.pyplot as plt
x=[1,2,3]
y=[3,5,8]
a=np.arange(3)
plt.bar(a,x)
plt.bar(a,y,bottom=x)
plt.show()
2)堆积条形图
画出一个简单的柱条形图,在以画好的图作为左边的基础,继续画图
import numpy as np
import matplotlib.pyplot as plt
x=[1,2,3]
x2=[4,5,6]
y=[3,5,8]
plt.barh(y,x)
plt.barh(y,x2,left=x)
plt.show()
3) 堆积面积图(stackplot)
多个y轴的数组,多条线叠加
#堆积面积图,y轴的点连成一条线,后一条是在前一条的基础上叠加
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(6)
y1=np.array([1,2,3,4,5,6])
y2=np.array([1,3,3,4,5,6])
y3=np.array([1,5,3,4,5,6])
plt.stackplot(x,y1,y2,y3)
plt.show()
5. 饼图/圆环图(pie)
1)饼图
主要是数据和标签
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
data=np.array([10,20,40,70,100])
label=np.array(['购物','人情往来','生活日用','休闲娱乐','学习支出'])
plt.pie(data,labels=label,autopct='%3.1f%%')
2)圆环图
需要数据,标签、大圆半径和保留的半径长度
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
data=np.array([10,20,40,70,100])
label=np.array(['购物','人情往来','生活日用','休闲娱乐','学习支出'])
plt.pie(data,labels=label,autopct='%3.1f%%',radius=1.2,wedgeprops={'width':0.7})
6. 散点图、气泡图(scatter)
1)散点图
scatter(x,y) x和y都是长度相同的数组,数组元素一一对应,形成点
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
#scatter(x,y) x和y都是长度相同的数组,数组元素一一对应,形成点
num=20
x=np.random.rand(num)
y=np.random.rand(num)
plt.scatter(x,y
2)气泡图
气泡图其实就是散点图再加一个点的大小的数组,所以就是x、y的数组和对应点的大小的数组
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
#scatter(x,y) x和y都是长度相同的数组,数组元素一一对应,形成点
num=20
x=np.random.rand(num)
y=np.random.rand(num)
area=(40*y)**2
plt.scatter(x,y,s=area)
7. 箱形图 (boxplot)
最关键的就是输入数据,其他的有的是输入数据的方式不一样,样式不一样
import numpy as np
import matplotlib.pyplot as plt
# 用于正常显示中文
plt.rcParams['font.sans-serif'] = 'SimHei'
#用于正常显示符号
plt.rcParams['axes.unicode_minus'] = False
data=np.random.rand(10)
plt.boxplot(data)
plt.show()
import pandas as pd
import matplotlib.pyplot as plt
#美化图形
plt.style.use('ggplot')
#读入excel表格
excelbook=pd.read_excel('./大二分数.xlsx')
num=excelbook['分数']
## 设置中文和负号正常显示
plt.rcParams['font.sans-serif'] = 'Microsoft YaHei'
plt.rcParams['axes.unicode_minus'] = False
#patch_artist=True : 设置自定义颜色填充箱形图
#showmeans=True :以点的形式显示均值
#boxprops = {'color':'black','facecolor':'#9999ff'}, # 设置箱体属性,填充色和边框色
#flierprops = {'marker':'o','markerfacecolor':'red','color':'black'}, # 设置异常值属性,点的形状、填充色和边框色
#meanprops : 设置均值的属性
#medianprops : 设置中位线的属性
plt.boxplot(x=num,showmeans=True,patch_artist=True,boxprops={'color':'green','facecolor':'pink'},
flierprops={'marker':'o','markerfacecolor':'red','color':'blue'},
meanprops={'marker':'D','markerfacecolor':'purple'},
medianprops={'linestyle':'--','color':'black'})
8. 雷达图 (polar)
polar(角度,到原点的距离)
import numpy as np
import matplotlib.pyplot as plt
# 用于正常显示中文
plt.rcParams['font.sans-serif'] = 'SimHei'
#用于正常显示符号
plt.rcParams['axes.unicode_minus'] = False
dim_num=6
#数据,角度,维度标签
data=np.array([
[0.40,0.32,0.35,0.30,0.30,0.88],
[0.32,0.35,0.54,0.23,0.43,0.90],
[0.23,0.43,0.90,0.32,0.35,0.67],
[0.40,0.32,0.35,0.30,0.30,0.60],
[0.40,0.32,0.77,0.20,0.30,0.60],
[0.23,0.43,0.90,0.32,0.39,0.56],
])
angle=np.linspace(0,2*np.pi,dim_num,endpoint=False)
label=['研究型','艺术型','社会型',
'企业型','传统型','现实型']
#把数据,角度,维度标签闭合,围成一圈
data=np.concatenate((data,[data[0]]))
angle=np.concatenate((angle,[angle[0]]))
label=np.concatenate((label,[label[0]]))
#先绘制雷达图
plt.polar(angle,data)
#设置极坐标的标签
plt.thetagrids(angle*180/np.pi,labels=label)
#填充多边形
plt.fill(angle,data,alpha=0.39)
9. 误差棒图 (errorbar)
x轴,y轴,和误差,3个数组
import numpy as np
import matplotlib.pyplot as plt
# 用于正常显示中文
plt.rcParams['font.sans-serif'] = 'SimHei'
#用于正常显示符号
plt.rcParams['axes.unicode_minus'] = False
x=np.arange(5)
y=[10,12,15,16,19]
yerror=[3,2,1,3,5]
plt.errorbar(x,y,yerr=yerror,capsize=6,capthick=3)
plt.show()
10.树地图
整体分成好多块,饼状图不够用时用树地图
#导包
import matplotlib.pyplot as plt
import squarify
#中文和负号处理办法
plt.rcParams['font.sans-serif']=['Microsoft YaHei']
plt.rcParams['axes.unicode_minus']=False
#设置警告消除
import warnings
warnings.filterwarnings('ignore')
#创建数据
#三个数组,各个数据要一一对应
name=['国内增值税','国内消费税','企业所得税','个人所得税',
'进口增值税、消费税','出口退税','城市维护建设税',
'车辆购置税','印花税','资源税','土地和房税','车船税烟叶税等']
income=[3908,856,801,868,1361,1042,320,291,175,111,414,63]
colors = ['steelblue','#9999ff','red','indianred',
'green','yellow','orange']
#绘图
plot=squarify.plot(
# 绘图数据
sizes=income,
# 数值标签
value=income,
# 标签
label=name,
# 自定义颜色
color=colors,
# 透明度
alpha=0.6,
# 边框颜色
edgecolor='white',
# 边框宽度
linewidth=1,
)
#树地图要去掉坐标轴,
plt.axis('off')
#去掉上边和有右边的刻度
plt.tick_params(top='off',right='off')
#设置标签大小
plt.rc('font',size=16)
#设置标题大小
plot.set_title('2017年8月*财政收支情况',fontdict={'fontsize':15})
plt.show()