matplotlib—总结 (更新中)

 

 

# -*- coding: utf-8 -*-

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']      # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False        # 用来正常显示负号

fig=plt.figure(figsize=(12,6))       # 定义图并设置画板尺寸
fig.set(alpha=0.2)                   # 设定图表颜色alpha参数
# fig.tight_layout()                 # 调整整体空白
plt.subplots_adjust(bottom=0.06,top=0.94,left=0.08,right=0.94,wspace =0.36, hspace =0.5)       # 设置作图范围、子图间距

# 子图基本设置
ax1=fig.add_subplot(241)                                                      # 定义子图1
ax1.set(title=u"子图标题",xlabel=u"x轴标题",ylabel=u"y轴标题")                # 设置标题
ax1.set_title(u"子图标题",fontdict={'fontsize':10})                           # 设置标题字体大小
ax1.axis([-5,5,-2,5])                                                         # 设置坐标范围

ax1.spines["top"].set_color("none")          # 上边框设置为不显示
ax1.spines["right"].set_color("none")        # 右边框设置为不显示
ax1.spines["left"].set_position(("data",0))        # 左边框位置设置在0刻度
ax1.spines["bottom"].set_position(("data",0))      # 下边框位置设置在0刻度
ax1.xaxis.set_ticks_position("bottom")             # x轴位置设置在下边框
ax1.yaxis.set_ticks_position("left")               # y轴位置设置在左边框

# ax1.set_xlim(-5,5)                         # 设置x轴刻度范围
# ax1.set_ylim(-2,5)                         # 设置y轴刻度范围
plt.xticks([-2*np.pi,-np.pi,0,np.pi,2*np.pi],["$-2\pi$","$-\pi$","$0$","$\pi$","$2\pi$"])         # 设置x轴刻度及标签
plt.yticks([-2,-1,0,1,2,3])                                                                       # 设置y轴刻度及标签

# 绘制简单线形图
x=np.arange(-2*np.pi,2*np.pi,0.01)    # 定义自变量序列
y1=np.sin(3*x)/x                      # 定义因变量序列1
y1_2 = np.sin(2*x)/x                  # 定义因变量序列2

ax1.plot(x,y1,"k--")                  # 绘图1。  颜色参数:b蓝色,g绿色,r红色,c蓝绿色,m洋红,y黄色,k黑色,w白色
for i in range(0,len(x),1000):                                        # 添加坐标标签
    plt.text(x[i],y1[i],(x[i],y1[i]))
plt.grid(True)                                                        # 添加网格
plt.legend(["first series","second series","third series"],loc=1)     # 添加图例

ax1.plot(x,y1_2,color="#87a3cc",linestyle="--")                   # 绘图2。

# plt.annotate()               # 用于添加注释

# 绘制直方图
ax2=fig.add_subplot(242)
x2= np.random.randint(0,100,200)              # 生成200个0-100的整数
n,bins,patches = plt.hist(x2,bins=5)          # 绘制直方图,面元划分5份
# print(n,bins,patches)

# 绘制条形图
ax3=fig.add_subplot(243)
x3= [0,1,2,3,4]                                     # 定义自变量序列3
y3= [5,6,7,8,9]                                     # 定义因变量序列3
ax3.bar(x3,y3,error_kw={'ecolor':'0.1 ','capsize':6},alpha=0.7,label='First')       # 绘制条形图  yerr=stdl,
plt.legend(loc=2)

# 绘制水平条形图
ax4=fig.add_subplot(244)
x4= [0,1,2,3,4]                                     # 定义自变量序列4
y4= [5,6,7,8,9]                                     # 定义因变量序列
ax4.barh(x4,y4,error_kw={'ecolor':'0.1 ','capsize':6},alpha=0.7,label='First')       # 绘制条形图  yerr=stdl,
plt.legend(loc=0)

# 绘制多序列堆积条状图
ax5=fig.add_subplot(245)               # 子图5
ax5.set_title('A Multiseries Bar Chart' ,fontsize=10)
ax5.axis([0,5,0,25])                   # 坐标范围

x5= np.arange(5)                       # 定义自变量序列
y5_l=[5,7,8,4,7]                     # 因变量序列5_1
y5_2=[8,6,4,9,7]                     # 因变量序列5_2
y5_3=np.array([7,6,6,8,6])           # 因变量序列5_3
y5_4=np.array([2,6,5,3,4])           # 因变量序列5_4
y5_5=[3,6,5,5,4]                     # 因变量序列5_5

bw = 0.2                             # 条粗细常量

ax5.bar (x5, y5_l, bw, color='b',hatch='xx')              # hatch参数设置影线
ax5.bar(x5+bw,y5_2,bw,color="g",hatch='///')
ax5.bar(x5+2*bw,y5_3,bw,color='r',hatch="\\\\\\\'")
ax5.bar(x5+2*bw,y5_4,bw,color='k',bottom=y5_3)           # bottom参数设置堆积
ax5.bar(x5+2*bw,y5_5,bw,color='y',bottom=y5_3+y5_4)      # bottom参数设置堆积

plt.xticks( x5+1.5* bw , ['A ','B ','C ','D ',' E '])               # 设置x轴刻度及标签


# 分两侧条形图
ax6=fig.add_subplot(246)                   # 子图6
ax6.set_ylim(-7,7)                         # 设置y轴刻度范围

x6= np.arange(8)
y6_1= np.array([1,3,4,6,4,3,2,3])
y6_2= np.array([1,2,5,4,3,3,2,1])


ax6.bar(x6,y6_1,0.9,facecolor='r',edgecolor='w')
ax6.bar(x6,-y6_2,0.9,facecolor='b',edgecolor='w')

plt.xticks(())
plt.grid(True)

for x, y in zip(x6, y6_1):                                            # 正轴序列添加标签
    plt.text(x, y +0.05, '%d' % y, ha='center',va= 'bottom')
for x, y in zip(x6, y6_2):                                            # 负轴序列添加标签
    plt.text(x, -y-0.05, '%d' % y, ha='center', va='top')


# 绘制饼图
ax7=fig.add_subplot(247)                       # 子图7
# ax7.axis('equal')

x7= [ 'Nokia','Samsung', 'Apple',' Lumia']             # 饼图标签序列
y7= [10,30,45,15]                                      # 定义百分比序列
colors = ['yellow','green','red','blue']               # 颜色序列
explode = [0.3,0,0,0]                                  # 抽离效果显示,参数序列

ax7.pie(y7,labels=x7,colors=colors,autopct='%.2f%%',explode=explode,shadow=True,startangle=90)

# 用DataFrame绘制图形
ax8=fig.add_subplot(248)

dict8= {'series1':[1,3,4,3,5],
       'series2':[2,4,5,2,4],
       'series3':[3,2,3,1,3]}              # 用于绘图的字典数据


# pd.DataFrame(dict8).plot(ax=ax8,kind='bar', stacked=True)                     # 绘制堆积条状图
# pd.DataFrame(dict8)['series1'].plot(ax=ax8,kind='pie',figsize=(6,6))          # 绘制饼图

plt.show()

  

posted @ 2018-08-19 12:39  todaynowind  阅读(265)  评论(0编辑  收藏  举报