文章目录
前言
一、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 : 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也是常用软件,具体操作如下:
最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建
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")
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()
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()
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()
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()
不同条件(维度)之间的内在关联关系 观察数据的离散聚合程度
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()
数量统计 频率统计(市场饱和度)
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的使用,任然需要加强使用熟练度.