Gallery
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,10,100)
y=np.sin(x)
z=np.cos(x**2)
plt.plot(x,y,"r-",label="$sin(x)$",linewidth=2)
plt.plot(x,y,"b--",label="$cos(x^2)$")
plt.xlabel("Times(s)")
plt.ylabel("Volt")
plt.title("PyPlot First Example")
plt.legend()
plt.show()
折线图:通常用来表示数据随时间或有序类别变化的趋势
简单折线图
import matplotlib.pyplot as plt
data=[1,2,3,4,5,6,7,8,9,1,2,4,5,7,9]
#随意创建的数据
plt.plot(data)
#引用Matplotlib库中的pyplot模块绘图
plt.show()
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
yy=[1,2,3,4,5,3,1,2,7,8]#随便创建的数据
xx=[3,5,4,1,9,3,2,5,6,3]
zz=[2,2,4,7,4,8,2,4,5,6]
plt.plot(yy,color='r',linewidth=5,linestyle=':',label='Data 1')
plt.plot(xx,color='g',linewidth=2,linestyle='--',label='Data 2')
plt.plot(zz,color='b',linewidth=0.5,linestyle='-',label='Data 3')
plt.legend(loc=2)
plt.xlabel('X轴名称',fontproperties='simhei')
plt.ylabel('y轴名称',fontproperties='simhei')
plt.title('折线图美化实例',fontproperties='simhei')
plt.ylim(0,10)
plt.show()
#10个点位置随机散点图
import matplotlib.pyplot as plt
import numpy as np
N=10
x=np.random.rand(N)
y=np.random.rand(N)
plt.scatter(x,y)
plt.show()
#10个点随机大小
import matplotlib.pyplot as plt
import numpy as np
N=10
x=np.random.rand(N)
y=np.random.rand(N)
size=(30*np.random.rand(N))**2
plt.scatter(x,y,s=size)
plt.show()
#更改散点颜色、透明度:颜色随机,透明度为0.5
import matplotlib.pyplot as plt
import numpy as np
N=10
x=np.random.rand(N)
y=np.random.rand(N)
size=(30*np.random.rand(N))**2
color=np.random.rand(N)
plt.scatter(x,y,s=size,c=color,alpha=0.5)
plt.show()
#更改散点形状,点形状改为上三角
import matplotlib.pyplot as plt
import numpy as np
N=10
x=np.random.rand(N)
y=np.random.rand(N)
size=(30*np.random.rand(N))**2
color=np.random.rand(N)
plt.scatter(x,y,s=size,c=color,alpha=0.5,marker="^")
plt.show()
#一张图绘制两组数据
import matplotlib.pyplot as plt
import numpy as np
N=10
x1=np.random.rand(N)
y1=np.random.rand(N)
x2=np.random.rand(N)
y2=np.random.rand(N)
plt.scatter(x1,y1,alpha=0.5,marker="^")
plt.scatter(x2,y2,alpha=0.5,marker="s")
plt.show()
#为散点图增加图例
import matplotlib.pyplot as plt
import numpy as np
N=10
x1=np.random.rand(N)
y1=np.random.rand(N)
x2=np.random.rand(N)
y2=np.random.rand(N)
plt.scatter(x1,y1,alpha=0.5,marker="^",label='triangle')
plt.scatter(x2,y2,alpha=0.5,marker="s",label="circle")
plt.legend(loc="best")#自己选择图例在合适的位置
plt.show()
bar(x,height,width=0.8,*,align='center',**kwargs)
#简单柱状图
import matplotlib.pyplot as plt
num_list=[1.5,0.6,7.8,6]
plt.bar(range(len(num_list)),num_list)
plt.show()
#设置柱子的颜色
import matplotlib.pyplot as plt
num_list=[1.5,0.6,7.8,6]
plt.bar(range(len(num_list)),num_list,color='crgb')
plt.show()
#设置标签
import matplotlib.pyplot as plt
name_list=['Monday','Tuesday','Wednesday','Thursday']
num_list=[1.5,0.6,7.8,6]
plt.bar(range(len(num_list)),num_list,color='crgb',tick_label=name_list)
plt.show()
#堆叠柱状图
import matplotlib.pyplot as plt
name_list = ['Monday','Tuesday','Wednesday','Thursday']
num_list = [1.5,0.6,7.8,6]
num_list2 = [1,2,1,2]
plt.bar(range(len(num_list)),num_list,color='c',tick_label=name_list,label='boys')
plt.bar(range(len(num_list)),num_list2,color='m',tick_label=name_list,bottom=num_list,label='girls')
#bottom在第一个柱状图的基础
plt.legend()
plt.show()
#横向柱状图
import matplotlib.pyplot as plt
name_list = ['Monday','Tuesday','Wednesday','Thursday']
num_list = [1.5,0.6,7.8,6]
num_list2 = [1,2,1,2]
plt.barh(range(len(num_list)),num_list,color='c',tick_label=name_list,label='boys')
plt.barh(range(len(num_list)),num_list2,color='m',tick_label=name_list,label='girls')
#bottom在第一个柱状图的基础
plt.legend()
plt.show()
#并列柱状图
import matplotlib.pyplot as plt
name_list = ['Monday','Tuesday','Wednesday','Thursday']
num_list = [1.5,0.6,7.8,6]
num_list2 = [1,2,1,2]
x=list(range(len(num_list)))
total_width=0.8
n=2
width=total_width/2
plt.bar(x,num_list,color='c',tick_label=name_list,width=width,label='boys')
for i in range(len(x)):
x[i]=x[i]+width
plt.bar(x,num_list2,color='m',tick_label=name_list,width=width,label='girls')
#bottom在第一个柱状图的基础
plt.legend(loc='best')
plt.show()
绘制饼状图的基本语法:
def pie(x, explode=None, labels=None, colors=None, autopct=None,
pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None,
radius=None, counterclock=True, wedgeprops=None, textprops=None,
center=(0, 0), frame=False, rotatelabels=False, hold=None, data=None)
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
labels='A','B','C','D'
sizes=[10,10,10,10]
plt.pie(sizes,labels=labels)
plt.title('简单饼状图')
plt.show()
#explode参数:一块饼图到中心的距离,默认位0
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
labels='A','B','C','D'
sizes=[10,10,10,10]
#explode参数:一块饼图到中心的距离
explode=(0,0,0.1,0)
plt.pie(sizes,labels=labels,explode=explode)
plt.title('简单饼状图')
plt.show()
#colos:数组,可选参数,默认为none;用来标注每块饼图的Matplotlib颜色参数序列
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
labels='A','B','C','D'
sizes=[10,10,10,10]
color=['r','k','g','m']
#explode参数:一块饼图到中心的距离
explode=(0,0,0.1,0)
plt.pie(sizes,labels=labels,explode=explode,colors=color)
plt.title('简单饼状图')
plt.show()
#autopct:控制饼图内百分比设置,可以使用format字符串或者format function
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
labels='A','B','C','D'
sizes=[10,10,10,10]
color=['r','c','g','m']
explode=(0,0,0.1,0)
plt.pie(sizes,labels=labels,explode=explode,colors=color,autopct='%1.1f%%')
plt.title('简单饼状图')
plt.show()
#x:每一块饼图的比例,为必填项,如果sum(x)>1,会将多余的部分进行均分
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
labels='A','B','C','D'
sizes=[0.1,0.2,0.3,0.2]
color=['r','c','g','m']
explode=(0,0,0.1,0)
plt.pie(sizes,labels=labels,explode=explode,colors=color,autopct='%1.1f%%')
plt.title('简单饼状图')
plt.show()
#添加图例,ply.legend()
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
labels='A','B','C','D'
sizes=[0.1,0.2,0.3,0.2]
color=['r','c','g','m']
explode=(0,0,0.1,0)
plt.pie(sizes,labels=labels,explode=explode,colors=color,autopct='%1.2f%%')
plt.title('简单饼状图')
plt.legend(loc="upper right",fontsize=8,borderaxespad = 0.3)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
plt.polar(0.25*np.pi,20,'ro',lw=2)
plt.ylim(0,50)
plt.show()
#0.25*np.pi:极角
#20:极径
#‘ro’:绘极坐标形状为红色圆点
#lw=2:极坐标图形宽度为2
import numpy as np
import matplotlib.pyplot as plt
theta=np.array([0.25,0.5,0.75,1,1.25,1.5,1.75,2])
r=[75,60,50,70,50,85,45,70]
plt.polar(theta*np.pi,r,'cs',lw=2)
plt.ylim(0,100)
#设置y轴的范围
plt.show()
#0.25*np.pi:极角
#20:极径
#‘ro’:绘极坐标形状为红色圆点
#lw=2:极坐标图形宽度为2
#闭合曲线:多构造一个极坐标点,和第一个点重叠
import numpy as np
import matplotlib.pyplot as plt
theta=np.array([0.25,0.5,0.75,1,1.25,1.5,1.75,2,0.25])
r=[75,60,50,70,50,85,45,70,75]
#最后一个极坐标与第一个参数相同
plt.polar(theta*np.pi,r,'cs--',lw=2)
plt.ylim(0,100)
#设置y轴的范围
plt.show()
#0.25*np.pi:极角
#20:极径
#‘ro’:绘极坐标形状为红色圆点
#lw=2:极坐标图形宽度为2
#fill()函数填充雷达图
import numpy as np
import matplotlib.pyplot as plt
theta=np.array([0.25,0.5,0.75,1,1.25,1.5,1.75,2,0.25])
r=[75,60,50,70,50,85,45,70,75]
#最后一个极坐标与第一个参数相同
plt.polar(theta*np.pi,r,'cs--',lw=2)
plt.fill(theta*np.pi,r,facecolor='r',alpha=0.25)
#填充
plt.ylim(0,100)
#设置y轴的范围
plt.show()
#0.25*np.pi:极角
#20:极径
#‘ro’:绘极坐标形状为红色圆点
#lw=2:极坐标图形宽度为2
#导入库
import numpy as np
import matplotlib.pyplot as plt
#数据准备
courses=['Python','Java','C++',
'C','PHP','R',]
scores=[10,20,30,40,50,60]
datalength=len(scores)
#等分圆,曲线闭合
angles=np.linspace(0,2*np.pi,datalength,endpoint=False)
scores.append(scores[0])
angles=np.append(angles,angles[0])
#绘图
plt.polar(angles,scores,'rv--',lw=2)
#设置标签
plt.thetagrids(angles*180/np.pi,courses,fontproperties='simhei')
#填充雷达图
plt.fill(angles,scores,facecolor='c',alpha=0.3)
plt.show()
plot_surface(X,Y,Z,*args,**kwargs)
p3d.Axes3D.scatter( xs, ys, zs=0, zdir=’z’, s=20, c=None, depthshade=True,
*args, **kwargs )
p3d.Axes3D.scatter3D( xs, ys, zs=0, zdir=’z’, s=20, c=None, depthshade=True,
*args, **kwargs)
bar3d(self, x, y, z, dx, dy, dz, color=None, zsort='average', shade=True, lightsource=None, \*args, \*\*kwargs)[source]
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig=plt.figure()
ax=fig.gca(projection='3d')
#测试数据
theta=np.linspace(-4*np.pi,4*np.pi,100)
z=np.linspace(-4,4,100)*0.3
r=z**4+1
x=r*np.sin(theta)
y=r*np.cos(theta)
ax.plot(x,y,z,'b^-',label='3D Picture Test')
mpl.rcParams['legend.fontsize']=20
ax.legend(loc='best')
plt.show()