数据分析之matplotlib基础

文章目录

前言

一、CONDA安装

二、jupyter notebook

​编辑

三、matplotlib

1.什么是matplotlib

2.matplotlib基本要点

基本语法

设置中文

3.练习

3.1 每隔两个小时的气温

 3.2表示10点到12点的每一分钟的气温

3.3统计出来了从11岁到30岁每年交的女(男)朋友的数量

3.4统计我和同桌从11岁到30岁每年交的女(男)朋友的数量

3.5散点图

3.6条形图

总结


前言

数据分析是用适当的方法对收集来的大量数据进行分析,用图像分析数据可以使数据分析更生动.matplotlib是常用的绘图模块,所以我们进行学习

一、CONDA安装

conda : data science package & environment manager

创建环境:     conda create --name python3 python=3

切换环境:     windows :activate python3     linux/macos : source activate python3

官方地址:  https://www.anaconda.com/download/

二、jupyter notebook

jupyter notebook也是常用软件,具体操作如下:

数据分析之matplotlib基础_第1张图片

三、matplotlib

1.什么是matplotlib

最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建

2.matplotlib基本要点

基本语法

from matplotlib import pyplot as plt    #导入pyplot

x = range (2,26,2)

y = [15,13,14.5,17,20,25,26,26,24,22,18,15]

  #数据在x,y轴的位置,是一个可迭代对象,x轴和y轴的数据一起组成了所有要绘制出的坐标

plt.plot(x,y,color='r',linestyle='--',linewidth=5,alpha=0.5,#透明度)   #传入x和y,通过plot绘制出折线图scatte绘制散点图,设置颜色,线条风格,线条粗细,透明度

bin_width = 3   #设置组距为3

plt.bar(_x,b,width=0.2,color="orange" )   #bar绘制条形图,只能接受含数字的可迭代对象,width表示长条的宽度,默认0.8

num_bins = int( (max(a)-min(a))/bin_width)   #分为多少组plt.hist(a,num_bins)

plt.hist(a,num_bins,normed=1)   #normed : bool是否绘制频率分布直方图,默认为频数直方图

fig = plt.figure(figsize=(20,8) ,dpi=80)

  #通过实例化一个figure并且传递参数,能够在后台自动使用该fgure实例—>在图像模糊的时候可以传入dpi参数,让图片更加清晰

plt.savefig( "./sig_size.png")   #保存图片,可以保存为svg这种矢量图格式,放大不会有锯齿

plt.xticks(x)   #设置x的刻度#

plt.xticks(x[::2])  #当刻度太密集时候使用列表的步长(间隔取值)来解决,matplotlib会自动帮我们对应

plt.legend (prop=my_font,loc="best")   #prop指定图例的字体,loc指定图例的位置,默认右上角

plt.xlabel("时间", fontproperties=my_font)  #设置x轴的label

plt.ylabel()   #设置y轴的label

plt.title()   #设置标题的label

plt.show()   #在执行程序的时候展示图形

设置中文

Windows和Linux可用:

font = {'family': 'Microsoft Yahei',
        'weight': '10'}
matplotlib.rc("font",**font)

全部有效:

from matplotlib import font_manager
my_font = font_manager. FontProperties(fname=" /System/Library/Fonts/PingFang.ttc")

3.练习

3.1 每隔两个小时的气温

from matplotlib import pyplot as plt
x = range(2,26,2)
y = [15,13,14,17,20,25,26,26,24,22,18,15]

#设置x刻度
x_labels = [i/2 for i in range(4,49)]
plt.xticks(x_labels[::2])
#plt.yticks[::2]

#调整图片大小
fig = plt.figure(figsize=(40,8),dpi=80)

plt.plot(x,y)
plt.show()

 3.2表示10点到12点的每一分钟的气温

import matplotlib
from matplotlib import pyplot as plt
import random
from matplotlib import font_manager

#设置汉字
font = {'family': 'Microsoft Yahei',
        'weight': '10'}
matplotlib.rc("font",**font)
my_font = font_manager. FontProperties(fname=" /System/Library/Fonts/PingFang.ttc

plt.xticks(,fontproperties=my_font))
plt.show()
x = range(0,120)
y = [random.randint(20,35) for i in range(120)]
fig = plt.figure(figsize=(40,8),dpi=80)
plt.plot(x,y)

#x刻度
_x = list(x)[::3]
_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]
plt.xticks(_x,_xtick_labels[::3],rotation=45,)
plt.xlabel("时间")
plt.ylabel("温度(℃)")
plt.title("10点到12每分钟时间变化情况")
plt.show()

3.3统计出来了从11岁到30岁每年交的女(男)朋友的数量

from matplotlib import pyplot as plt
from matplotlib import font_manager
import matplotlib
print(matplotlib.matplotlib_fname())
my_font = font_manager.FontProperties(fname=" D:\Program Files\conda\Lib\site-packages\matplotlib\mpl-data\fonts\ttf")
plt.figure(figsize=(20,8),dpi=80)
x = range(11,31)
y =[1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
plt.plot(x,y)
_xtick_labels = ["{}岁".format(i) for i in x]
plt.xticks(x,_xtick_labels,fontproperties=my_font)
#绘制网格
plt.grid(alpha=0.1) #调整线的深浅
plt.show()

3.4统计我和同桌从11岁到30岁每年交的女(男)朋友的数量

from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager. FontProperties(fname=" /System/Library/Fonts/PingFang.ttc")
plt.figure(figsize=(20,8),dpi=80)
x = range(11,31)
y1 =[1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y2 =[1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]

plt.plot(x,y1,label="同桌",color="#F08080")
plt.plot(x,y2,label= "自己",color="#DB7093",linestyle="--")

_xtick_labels = ["{}岁".format(i) for i in x]
plt.xticks(x,_xtick_labels)
#绘制网格
plt.grid(alpha=0.4,linestyle=':')
#添加图例
plt.legend(prop=my_font,loc="upper left"")
plt.show()

3.5散点图

不同条件(维度)之间的内在关联关系 观察数据的离散聚合程度

from matplotlib import pyplot as plt
from matplotlib import font_manager

my_font = font_manager.FontProperties(fname="/System/Library/Fonts/Hiragino Sans GB.ttc")
y3 = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]
y10 = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13,6]
x3 = range(1,32)
x10 = range(51,82)

#设置尺寸
plt.figure(figsize=(20,8),dpi=80)

#调整x轴间距
_x = list(x3)+list(x10)
_xtick_labels =["3月{0}日".format(i) for i in x3]
_xtick_labels +=["10月{0}日".format(i) for i in x10]
plt.xticks(_x,_xtick_labels,rotation=45)
#绘制
plt.scatter(x3,y3,label="三月份")
plt.scatter(x10,y10,label="十月份")

#添加图例
#plt.legend(loc="upper left",prop=my_font)

 #添加图注
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("三月和十月北京市温度")

plt.show()

3.6条形图

数量统计 频率统计(市场饱和度)

from matplotlib import pyplot as plt

a = ["猩球崛起3:终极之战","敦刻尔克","蜘蛛侠:英雄归来","战狼2"]
b_16 = [15746,312,4497,319]
b_15 = [12357,156,2045,168]
b_14 = [2358,399,2358,362]

plt.figure(figsize=(20,8),dpi=80)

bar_width=0.2
x_14=list(range(len(a)))
x_15=[i+bar_width for i in x_14]
x_16=[i+bar_width*2 for i in x_14]

plt.bar(range(len(a)),b_14,width=bar_width,label="9月14日")
plt.bar(x_15,b_15,width=bar_width,label="9月15日")
plt.bar(x_16,b_16,width=bar_width,label="9月16日")

#设置x轴的刻度
plt.xticks(x_15,a)

plt.show()

总结


以上就是今天要讲的内容,本文仅仅简单介绍了matplotlib的使用,任然需要加强使用熟练度.

你可能感兴趣的:(绘图专栏,matplotlib,数据分析,python)