python(matplotlib)绘制饼状图、散点图和极坐标图

这里将介绍普通的饼状图和带图例的饼状图,还有用不同形状显示的散点图,最后会介绍不太常用的极坐标图。

饼状图的绘制

1.利用matplotlib库文件,画出如下的饼图,没有突出显示和图标。
在这里插入图片描述
代码显示:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['Youyuan'] 
labels='A班','B班','C班','D班'
sizes=[10,30,45,15]
plt.pie(sizes,labels=labels,autopct='%1.1f%%',shadow=False,startangle=90)
plt.title('班级名称')
plt.legend()#添加图例
plt.axis('equal')
plt.show()

2.利用matplotlib库文件,画出如下的饼图(explod=0.5),这里会将重要的区域划分凸显出来。
在这里插入图片描述
代码显示:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['Youyuan'] 
labels='A班','B班','C班','D班'
sizes=[10,30,45,15]
explode=(0,0,0.5,0)
plt.pie(sizes,explode=explode,labels=labels,autopct='%1.1f%%',shadow=False,startangle=90)
plt.title('班级名称')
plt.legend()#添加图例
plt.axis('equal')
plt.show()

3.绘制带有长条形图例的直方图。
在这里插入图片描述
代码显示:

import matplotlib
import matplotlib.pyplot as plt

matplotlib.rcParams['font.sans-serif'] = ['Youyuan']
matplotlib.rcParams['axes.unicode_minus'] = False
plt.figure(figsize=(10,8), dpi=80)#创建一个画布,也可以不使用
label = 'A-班','B-班','C-班','D-班'
sizes = [16,30,44,10]
explode = [0,0.1,0,0]  
color = ["blue","orange","green","red"]
patches, l_text, p_text = plt.pie(sizes,labels=label,colors=color,explode=explode,autopct='%1.1f%%',shadow=False,startangle=10,pctdistance=0.6)
plt.legend()
plt.legend(loc='lower center',ncol=4,borderaxespad=-2,frameon=True)#设置标签的样式
plt.axis("equal")

plt.show()

基本散点图绘制

1.利用matplotlib库文件,画出如下的散点图,散点为五角星形状。
在这里插入图片描述
代码显示:

# 画五角星形状的散点图
import numpy as np
import matplotlib.pyplot as plt
N = 1000 # 散点的个数
plt.axis([-5,3,-2,3])
x=np.random.normal(0,1,1000)
y=np.random.normal(0,1,1000)  # 随机产生x和y轴的坐标
area = np.pi * (6 * np.random.rand(N))**2  # 点的半径范围:0~15 
plt.scatter(x, y, s=area,  alpha=0.5, marker="*")
plt.show()

2.利用matplotlib库文件,绘制出圆点状散点图,如下所示。
在这里插入图片描述
代码显示:

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['Youyuan'] #正常显示中文
plt.rcParams['axes.unicode_minus']=False #用来正常坐标轴的数字的负号
N = 90 # 散点的个数
plt.axis([-5,3,-2,3])
x=np.random.normal(0,1,1000)
y=np.random.normal(0,1,1000)  # 随机产生x和y轴的坐标
area = np.pi * (5 * np.random.rand(N))**2  # 点的半径范围
plt.scatter(x, y, s=area,  alpha=0.8, marker="o")#形状和清晰度的设计
plt.xlabel('横轴:X',color='green',fontsize=15)
plt.ylabel('纵轴:Y',color='red',fontsize=15)#坐标轴的标签设计
plt.title('散点图',color='blue',fontsize=15)
plt.show()

3.利用matplotlib库文件,绘制出直线散点图,具体如下所示。
在这里插入图片描述
代码显示:

import matplotlib.pyplot as plt
import numpy as np
import matplotlib
matplotlib.rcParams['font.family']='YouYuan'
matplotlib.rcParams['font.size']=20
a=np.arange(1,200,0.5)
plt.plot(a,2*a+6,'b .')
plt.xlabel('x axis caption',color='black')
plt.ylabel('y axis caption',color='black')
plt.title('Matplotlib demo',color='black')
plt.axis([1,10,5,25])
plt.show()

几种极坐标图的绘制

1.利用matplotlib库文件,画出如下的空极坐标图。
在这里插入图片描述
代码显示:

#绘制空的极坐标图
import numpy as np
import matplotlib. pyplot as plt
N=0#空的极坐标图
plt.figure(figsize=(10,5), dpi=80)#创建一个画布,也可以不使用
theta=np.linspace(0.0,2*np.pi ,N, endpoint=False)
radii=10*np. random. rand(N)
width=np.pi/4* np.random.rand(N)
ax=plt. subplot(111, projection='polar')
bars=ax.bar(theta, radii , width=width, bottom=0.0)
for r,bar in zip(radii,bars):
    bar.set_facecolor(plt.cm.viridis(r/10.))
    bar.set_alpha(0.5)
plt. show()

这里只用将N的值设置为0,最后显示的就是空的极坐标图。
2.利用matplotlib库文件,画出如下的普通极坐标图。
在这里插入图片描述
代码显示:

#极坐标图的绘制
import numpy as np
import matplotlib. pyplot as plt
N=20
plt.figure(figsize=(10,5), dpi=80)#创建一个画布,也可以不使用
theta=np.linspace(0.0,2*np.pi ,N, endpoint=False)
radii=10*np. random. rand(N)
width=np.pi/4* np.random.rand(N)
ax=plt. subplot(111, projection='polar')
bars=ax.bar(theta, radii , width=width, bottom=0.0)
for r,bar in zip(radii,bars):
    bar.set_facecolor(plt.cm.viridis(r/10.))
    bar.set_alpha(0.5)
plt. show()

3.利用matplotlib库文件,画出如下的彩色散点填充的极坐标图。
在这里插入图片描述
代码显示:

import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize=(10,10), dpi=80)#创建一个画布,也可以不使用
N = 100
r = 2*np.random.rand(N) 
theta = 2*np.pi*np.random.rand(N)  #2*pi*x
area = 200*r**2
colors = theta
fig = plt.figure()
ax = fig.add_subplot(111, projection='polar')  #画布分割
c = ax.scatter(theta, r, c=colors, s=area, cmap='hsv', alpha=0.75)#散点填充
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值