【python 数据挖掘】基于matplotlib的绘图一:四种基本图形及其参数

python绘图1

        • 1、折线图
        • 2、散点图
        • 3、条形图
        • 4、饼状图

图形化最大的优点就是直观,图像比表格能够传递更多信息,但是一张优秀的统计图,首先要保证正确性,这里的正确是指用合理的统计图来表达原始数据的特征或者联系。比如:展示不同城市的手机的销售量,就不适合用折线图,因为销售量和城市之间不能体现趋势,用条形图就更合适。所以 用对是前提

1、折线图

  • 把图画出来:
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0,3*np.pi,0.1)
y = np.sin(x) 

plt.plot(x,y) # 用列表也行,但是用列表想计算正弦就很难了

plt.show() # 在spyder等图形界面的环境下不加plt.show()也能出图,但在命令行环境下就必须加这句话才会弹出图窗

【python 数据挖掘】基于matplotlib的绘图一:四种基本图形及其参数_第1张图片

掌握了以上用法,就会最基本的画图了,但就跟会print('hello, world!')一样。(/捂脸笑)

  • 常用参数:改一改,看一看以下一些参数就基本够用了
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0,3*np.pi,0.1)
y1 = np.sin(x)
y2 = np.cos(x)

# 打开一个10*6英寸,编号'89757'的图窗
plt.figure(num='89757',figsize=(10,6))

# 设置线条形状和标记的形状、线宽和标记的大小、颜色
plt.plot(x,y1,linestyle='-.',marker='o',linewidth=0.5,markersize=3,color='r')
plt.plot(x,y2,linestyle='--',marker='^',linewidth=0.5,markersize=3,color='g')

# 设置标题和横纵坐标的范围,lim是limit的缩写
plt.title('plot')
plt.xlim((0,3*np.pi))
plt.ylim((-1,1))

# 设置横纵标签文本以及距离坐标轴的距离,以及旋转角度,y轴默认90°
plt.xlabel('x', labelpad=5)
plt.ylabel('y', labelpad=5, rotation=0)

# 设置网格和图例
plt.grid(b=True,which='major',axis='y',linestyle=':',color='y')
plt.legend(('y=sin(x)','y=cos(x)'))

# 绘图
plt.show() # 在spyder等图形界面的环境下不加plt.show()也能出图,但在命令行环境下就必须加这句话才会弹出图窗

【python 数据挖掘】基于matplotlib的绘图一:四种基本图形及其参数_第2张图片

2、散点图

  • 常用参数:(艺术大师-shug)
import matplotlib.pyplot as plt
import numpy as np

# 支持中文
plt.rcParams['font.sans-serif']=['SimHei'] 

# 开图窗
fig = plt.figure(num=1,figsize=(8,6),facecolor='w',frameon=True)
ax = fig.add_subplot(111)

# 夜空
ax.patch.set_color('darkblue')

# 星星
N=20 
plt.scatter(np.random.rand(N), np.random.rand(N),c='k',s=50,marker='*')
plt.scatter(np.random.rand(N), np.random.rand(N),c='r',s=10,marker='*')
plt.scatter(np.random.rand(N), np.random.rand(N),c='g',s=100,marker='*')
plt.scatter(np.random.rand(N), np.random.rand(N),c='pink',s=70,marker='*')
plt.scatter(np.random.rand(N), np.random.rand(N),c='y',s=120,marker='*')

'''
marker=['.',',','o','v','^','<','>','1','2','3','4','s','p','*','h','H','+',
        'x','D','d','|','_','.',','] # marker标记的样式库,具体长啥样自己试一下就知道了
'''

# 设置标题和横纵坐标的范围
plt.title('繁星')
plt.xlim((0,1))
plt.ylim((-1,1))

# 关掉坐标标签和坐标刻度线
plt.xlabel('')
plt.ylabel('')
plt.xticks(())
plt.yticks(())

# 绘图
plt.show() # 在spyder等图形界面的环境下不加plt.show()也能出图,但在命令行环境下就必须加这句话才会弹出图窗

【python 数据挖掘】基于matplotlib的绘图一:四种基本图形及其参数_第3张图片

3、条形图

# 导入绘图模块
import matplotlib.pyplot as plt
import numpy as np
# 构建数据
Y2016=[15600,12700,11300,4270,3620]
Y2017=[17400,14800,12000,5200,4020]
labels=['Beijing', 'Shanghai','HongKong','Shenzhen', 'Guangzhou']
bar_width=0.5
plt.figure(figsize=(10,6))
#设置条形颜色、透明度、宽度
plt.bar(np.arange(5),Y2016,label='2016',color='yellow',alpha=0.8,width=bar_width)
plt.bar(np.arange(5)+bar_width,Y2017,label='2017',color='black',alpha=0.8,width=bar_width)
#添加轴标签
plt.xlabel('Top5City',fontproperties='Times New Roman',fontsize=16)
plt.ylabel('Family Amount',fontproperties='Times New Roman',fontsize=16)
plt.xticks(np.arange(5)+bar_width,labels)
plt.ylim([2500,20000])
plt.yticks(fontproperties='Times New Roman', size=14)
plt.xticks(fontproperties='Times New Roman',size=14)
#添加标题
plt.title('Millions Family  AmountTop5City   Distribution ',fontproperties='Times New Roman', fontsize=16)
#为每个条形图添加数值标签
for x2016,y2016 in enumerate(Y2016):
    plt.text(x2016-0.25,y2016+100,'%s'%y2016)
for x2017,y2017 in enumerate(Y2017):
    plt.text(x2017+0.2,y2017+100,'%s'%y2017)
#显示图例
plt. legend()

plt. show()

【python 数据挖掘】基于matplotlib的绘图一:四种基本图形及其参数_第4张图片

4、饼状图

# 导入绘图模块
import matplotlib.pyplot as plt
import numpy as np

plt.figure(figsize=(10,6))
# 构造数据,调整数据顺序,以免低占比的饼块相邻,无法分辨
edu=[0.2515,0.0057,0.3724,0.3336,0.0368]
labels=['HighSchool','Others','Junior College','Eachelor','Master']
explode=[0,0,0.1,0,0]#用于分离突出显示大专学历人群
colors=['#61666f','#000000','#6f6f6f','#9f9f9f','#cfcfef']
# 黑白灰度显示颜色
# 将横、纵坐标轴标准化处理,保证饼图是一个正圆,否则为椭圆
plt.axes(aspect='equal')
# 控制x轴和y轴的范围
plt.xlim(0,4)
plt.ylim(0,4)
# 绘制饼图
plt.pie(x=edu,#绘图数据
    explode=explode,#突出显示大专人群
    labels=labels,#添加教育水平标签
    colors=colors,#设置饼图的自定义填充色
    autopct='%.1f%%',#设置百分比的格式,这里保留一位小数
    pctdistance=0.5,#设置百分比标签与圆心的距离
    labeldistance=1.0,#设置教育水平标签与圆心的距离
    startangle=180,#设置饼图的初始角度
    radius=1.5,#设置饼图的半径
    counterclock=False,#是否逆时针,这里设置为顺时针方向
    wedgeprops={'linewidth':1.5,'edgecolor':'green'},#设置饼图边界的属性值
    textprops={'fontsize':20,'color':'k'},#设置文本标签的属性值
    center=(1.8,1.8),#设置饼图的原点
    frame=True) #是否显示饼图的图框,这里设置显示
#删除x轴和y轴的刻度
plt.xticks(())
plt.yticks(())


plt.show()

【python 数据挖掘】基于matplotlib的绘图一:四种基本图形及其参数_第5张图片

你可能感兴趣的:(python学习笔记,python,数据挖掘,开发语言)