一、使用Matplotlib提供的pie()函数绘制饼图:
import matplotlib.pyplot as plt
plt.figure(figsize=(10,10))
data = [0.12,0.2341,0.4355,0.6778,0.0234,0.22,0.3341]
labels = ['Java','Python','A','B','C','D','E']
colors = ['red','pink','purple','orange']
explode = [0,0,0.3,0,0,0,0]
plt.xlim(0,12)
plt.ylim(0,12)
plt.axis(aspect = 'equal')
plt.pie(x = data,#数据
explode = explode,#突出显示
labels=labels,#标签
colors = colors,#颜色
autopct = '%.3f%%',#百分比设置显示位数
startangle=180,#设置饼图的初始角度
labeldistance=1.3,#设置标签与圆心的距离
pctdistance=0.8,#设置百分比标签与圆心的距离
center = (6,6),#圆心的位置
radius= 4,#设置饼图的半径
counterclock=False,#是否为逆时针方向 False为顺时针
wedgeprops={'linewidth':0.1,'edgecolor':'green'},#内外边界的属性设置
textprops={'fontsize':15,'color':'black'},#设置文本标签的属性
frame = 1)#是否显示饼图的外方框,此处显示
plt.xticks(())#不显示坐标
plt.yticks(())#不显示坐标
plt.show()
二、使用Matplotlib提供的bar()函数绘制柱状图,如果希望生成多组柱状图,可通过多次调用bar()函数来实现。
import matplotlib.pyplot as plt
# 解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Simhei']
x_data = ['2011','2012','2013','2014','2015','2016','2017']
#定义两个列表分别作为y轴数据
y_data = [58000,60200,63000,71000,84000,90500,107000]
y_data2 = [52000,50200,53000,61000,74000,80500,97000]
bar_width = 0.3
#传入两组分别代表X,Y轴的数据
plt.bar(np.arange(len(x_data)),y_data,label = '疯狂Java讲义',color = 'steelblue',alpha = 0.8,width = bar_width)
plt.bar(np.arange(len(x_data))+bar_width+0.05,y_data2,label = '疯狂Python讲义',color = 'indianred',alpha = 0.8,width = bar_width)
for x,y in enumerate(y_data):
plt.text(x,y+1000,'%s'%y,ha = 'center',va = 'bottom')#x,y控制输出的位置,第三个参数控制输出的内容,va垂直对齐方式,ha水平对齐方式
#由于x轴为字符串,所有x表示索引值,0为第一个条柱所在的位置
for x,y in enumerate(y_data2):
plt.text(x+bar_width,y+1000,'%s'%y,ha = 'center',va = 'bottom')
plt.xlabel('年份')
plt.ylabel('销量')
plt.title('销售情况对比图')
plt.legend()
plt.xticks(np.arange(len(x_data))+bar_width/2,labels = x_data)
plt.show()
使用np.arange(len(x_data))+bar_width+0.05作为横坐标绘图后,如果想显示年份,可以重新设置刻度显示为年份
plt.xticks(np.arange(len(x_data))+bar_width/2,labels = x_data)
三、水平柱状图与纵向柱状图使用方法一致,使用barh()绘图即可。
四、散点图与折线图的区别是,只绘制散点,不对点连接。使用scatter()函数绘制。参数说明:
x:指定X轴数据
y:指定y轴数据
s:指定散点的大小
c:指定散点的颜色
alpha:指定散点的透明度
linewidths:指定散点边框线的宽度
edgecolors:指定散点边框的颜色
marker:指定散点的图形样式
cmap:指定散点的颜色映射,会使用不同颜色来区分散点的值
import numpy as np;import matplotlib.pyplot as plt
x_data = np.linspace(-np.pi,np.pi,64,endpoint = True)
plt.scatter(x_data,np.sin(x_data),marker = 'p',c = 'purple',s = 50,alpha = 0.5,linewidths=1,edgecolors=['green','yellow'])
plt.scatter(x_data[0],y = np.sin(x_data)[0],c = 'red',s = 150,alpha = 1)
plt.scatter(x_data[63],y = np.sin(x_data)[63],c = 'black',s = 150,alpha = 1)
plt.title('正弦曲线的散点图')
gc = plt.gca()
gc.spines['right'].set_color('none')
gc.spines['top'].set_color('none')
gc.spines['bottom'].set_position(('data',0))
gc.spines['left'].set_position(('data',0))
plt.show()