matplotlib的书昨天到了,所以先把这个整理完,再继续pyecharts
matplotlib库是建立在Numpy基础上的绘图库。
x= np.linspace(0.5,3.5,10)
是表示在0.5至3.5之间均匀取100个数
ls="-"
:折线图的线条风格
lw=2
:折线图线条宽度
label="plot"
:折线图内容标签文本
折线图:plt.plot(x,y,label="plot")
散点图:plt.scatter(x,y,label="scatter")
import matplotlib.pyplot as plt
import numpy as np
x= np.linspace(0,10,50)
y= np.cos(x)
plt.plot(x,y,ls="-",lw=2,label="plot")
# plt.scatter(x,y,label="scatter")
plt.legend()
plt.show()
设置x轴的数值显示范围:plt.xlim(xmin,xmax)
import matplotlib.pyplot as plt
import numpy as np
x= np.linspace(0,10,10)
y= np.cos(x)
plt.scatter(x,y,label="scatter-plt.xlim(0,5)")
plt.xlim(0,5) #图1-3 看对比
plt.legend()
plt.xlabel ("x")
plt.ylabel("x-axia")
plt.show()
网格线设置:ax.grid(linestyle=":",color="r")
参考线设置:
①平行x轴的水平线:ax.axhline(y=0)
②平行y轴的水平线:ax.axvline(x=5)
③平行x轴的水平区域:ax.axhspan(y=0)
④平行y轴的水平区域:ax.axvspan(x=5)
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
# Data for plotting
t= np.linspace(0,10,100)
s= np.cos(t)
fig, ax = plt.subplots()
ax.scatter(t, s)
ax.set(xlabel='x-axis', ylabel='y-axis',title='xlabel') #x轴标签
# ax.grid(linestyle=":",color="r") # 网格线
ax.axhline(y=0,c="r",ls="--",lw=2) # 水平线 红色的那条
ax.axvline(x=5,c="g",ls="--",lw=2) # 绿色的水平线
plt.show()
import matplotlib.pyplot as plt
import numpy as np
# Data for plotting
x= np.linspace(0,10,100)
y= np.sin(t)
fig, ax = plt.subplots()
ax.scatter(x,y)
#ax.axhspan(ymin=-0.25,ymax=0.25,facecolor="r",alpha=0.3) # 水平线 红色的那条
#ax.axvspan(xmin=4,xmax=6,facecolor="g",alpha=0.2) # 绿色的水平线
ax.set(title='annotate()') #x轴标签
ax.legend()
plt.annotate("maximum",
xy=(np.pi/2,1), #箭头指向位置
xytext=((np.pi/2)+1.0,.8), #文本位置
weight="bold", #文本加粗
color="r", #文本是红色的
arrowprops=dict(arrowstyle="->",connectionstyle="arc3",color="r") #箭头设置
)
plt.show()
matplotlib会有中文乱码的问题,所以需要在前面添加两行代码:
plt.rcParams['font.sans-serif'] = ['KaiTi']
plt.rcParams['axes.unicode_minus'] = False
柱状图:bar(x,y)
条形图:barh(x,y)
# -*- coding:utf-8 -*-
import matplotlib as mpl
import matplotlib.pyplot as plt
#解决中文显示问题
plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
#some simple data
x= [1,2,3,4,5,6,7]
y= [3,1,4,5,8,9,7]
# create bar
fig, ax=plt.subplots()
#ax.bar(x,y,align="center",color="c",tick_label=["7/23","7/24","7/25","7/26","7/28","7/29","7/30"],hatch="/") #柱形图
ax.barh(x,y,align="center",color="#F5B26F",tick_label=["7/23","7/24","7/25","7/26","7/28","7/29","7/30"],hatch="/") #条形图
ax.set(xlabel='重量(kg)', ylabel='日期',title='条形图')
ax.legend()
ax.show()
饼图:plt.pie(x)
设置饼图
①名称:labels = '苹果', '西瓜', '柠檬', '荔枝'
②颜色:colors=["#F5B26F","#FA8072","#DC143C","#FFE4E1"]
③大小:sizes = [2, 30, 45, 10]
④突出:explode = (0, 0, 0.1, 0)
饼图更加均匀:ax1.axis('equal')
极线图:在极坐标绘制折线图
函数:plt.polar(theta,r)
theta表示夹角大小;r表示标记到圆点的距离
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
# Pie chart, where the slices will be ordered and plotted counter-clockwise:
labels = '苹果', '西瓜', '柠檬', '荔枝' #名称 逆时针
colors=["#F5B26F","#FA8072","#DC143C","#FFE4E1"] #颜色设置
sizes = [2, 30, 45, 10] #一一对应就行
explode = (0, 0, 0.1, 0) # 只突出柠檬 这可以随意设定
fig1, ax1 = plt.subplots()
ax1.pie(sizes, explode, labels=labels, autopct='%1.1f%%',colors=colors,
shadow=False, #有无阴影
startangle=90 #设置90比较好看呐
)
ax1.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle.
'''极线图的代码
import matplotlib.pyplot as plt
barslices=10 #数目
theta = 2 * np.pi * np.random.rand(barslices) #角度
r=3*np.random.rand(barslices) #离圆心距离设置
plt.polar(theta,r,
color="#E7625F", #线的颜色 粉粉的那个
linewidth=1.5,
marker="*", #星星~
mfc="white", ##星星内部颜色
ms=10 #星星的大小
)
'''
plt.show()
气泡图:二维数据借助气泡大小展示三维数据
函数:plt.scatter(x,y,s,c,cmap,marker)
①s:散点标记的大小
②c:散点标记的颜色
③cmap:将浮点数映射成颜色的颜色映射表
④marker:气泡的形状
import matplotlib.pyplot as plt
import matplotlib.pyplot as mpl
import numpy as np
plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
a=np.random.randn(80)
b=np.random.randn(80)
fig, ax = plt.subplots()
ax.scatter(a,b,
s=np.power(10*a+20*b,2), # 散点标记的大小
c=np.random.rand(80), # 散点标记的颜色
cmap=mpl.cm.RdYlBu, # 将浮点数映射成颜色的颜色映射表
marker="o")
ax.set(xlabel='图2-3 气泡图',title='这个图颜色哈哈哈哈我好喜欢')
ax.show()
棉棒图:绘制离散有序的数据
函数:plt.stem(x,y,linefmt,markerfmt,basefmt
①linefmt:棉棒的样式
②markerfmt:棉棒末端的样式
③basefmt:制定基线的样式
import matplotlib.pyplot as plt
import numpy as np
a=np.random.randn(20)
b=np.random.randn(20)
plt.stem(a,b,linefmt="-.",markerfmt="o",basefmt="-") #棉棒图
plt.show()
import matplotlib.pyplot as plt
import numpy as np
a=np.linspace(0.1,0.6,6)
b=np.exp(a)
plt.errorbar(a,b,fmt="bo:",yerr=0.2,xerr=0.02) #误差棒图
plt.show()