Python:Matplotlib
Matplotlib介绍
Matplotlib包:
Matplotlib包专门用于开发2D图表、3D图表。(也就是画统计图)
Matplotlib官网:link.
Matplotlib下载和安装:建议直接下载安装Anaconda,直接拥有一个庞大包库,省去各种麻烦。link.
如果画图时遇到中文乱码问题:link.
matplotlib更多例子看官网:link.link.
统计图的优点:
统计表虽然能做到非常精确,但是不够直观。
统计图虽然不会那么精确,但更直观。
关于数据源:
把数据来源写一下,因为不同数据来源找到的数据或多或少有点差别,写下数据来源就算是一个凭证,也方便做后期校对。
1)折线图
折线图介绍:
折线图的特点:用于呈现数据的趋势变化
画折线图步骤:
1.导入matplotlib.pyplot
2.设定画图框架,如清晰度、框架大小、字体等等…
3.折线图的数据
4.画出折线图,设置各种参数(如图片水印、折线图各种效果…) + 设置x轴y轴(如刻度…) + 标题
附注:具体的各种参数可以看帮助文档或者网上找,自己可以慢慢调试,看各种参数的效果。
画折线图的具体案例:
1.一幅折线图
如果表示10点到12点的每一分钟的气温,如何绘制折线图观察每分钟气温的变化情况?
附注:题目和数据来源于网络课程
import matplotlib.pyplot as plt
import random
def all_title(xlabel, ylabel, title):
plt.xlabel(xlabel) #x轴标题
plt.ylabel(ylabel) #y轴标题
plt.title(title) #总标题
#画图框架
plt.figure(figsize = (20, 6), dpi = 80)
plt.rcParams['font.sans-serif']=['SimHei'] #字体
#数据
x = range(120)
y = [random.randint(20, 35) for i in range(120)]
#折线图
plt.plot(x, y)
_xticks = ["10点{}分".format(i) for i in x if i < 60]
_xticks += ["11点{}分".format(i-60) for i in x if i >= 60]
plt.xticks(x[::4], _xticks[::4], rotation = 45) #x轴刻度
all_title("时间", "温度", "温度随时间变化趋势图")
plt.text( 1, 20, "作者:xw", fontsize=40, color="gray", alpha=0.4) #水印
plt.show()
2.多幅折线图
假设大家在30岁的时候,根据自己的实际情况,统计出来了你和你同桌各自从11岁到30岁每年交的女(男)朋友的数量如列表y1和y2,请在一个图中绘制出该数据的折线图,以便比较自己和同桌20年间的差异,同时分析每年交女(男)朋友的数量走势。
附注:题目和数据来源于网络课程
import matplotlib.pyplot as plt
def set_axes(axes):
plt.sca(axes) #哪个图需要处理
_xaxes = ["{}岁".format(i) for i in x]
plt.xticks(x, _xaxes)#x轴刻度
plt.xlabel("年龄") #x轴标题
plt.ylabel("朋友个数") #y轴标题
plt.title("朋友个数随年龄变化") #总标题
#画图框架
fig, axes = plt.subplots(nrows = 1, ncols = 2, 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]
#折线图
axes[0].plot(x, y1, color = "r", linestyle = "--", linewidth = 1, alpha = 1)
set_axes(axes[0])
axes[1].plot(x, y2 )
set_axes(axes[1])
plt.text( 1, 1, "作者:xw", fontsize=40, color="gray", alpha=0.4) #水印
plt.show()
2)散点图
散点图介绍:
散点图特点:呈现数据的分布规律、离散化程度
画散点图步骤:
1.导入matplotlib.pyplot
2.设定画图框架,如清晰度、框架大小、字体等等…
3.散点图的数据
4.画出散点图,设置各种参数(如图片水印、散点图各种效果…) + 设置x轴y轴(如刻度…) + 标题
附注:具体的各种参数可以看帮助文档或者网上找,自己可以慢慢调试,看各种参数的效果。
散点图的具体参数:
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None,vmin=None,vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwargs)
x,y :横纵坐标
s :散点(标记)的大小,默认20
c :散点(标记)的颜色,默认蓝色。b蓝色,c青色,g绿色,k黑色,m洋红,r红色,w白色,y黄色
marker :散点(标记)的形状,默认是".",即圆点。可自定义,可以自定义成其它形状,也可以自定义成文字,如" h e l l o hello hello"
cmap :英文对应colormap,用于表示从第一个点开始到最后一个点之间颜色渐进变化,如c=y1,cmap=plt.cm.Reds。
norm: normalize,
vmin:
vmax:
alpha :散点形状的透明度,alpha的范围为[0,1],从透明到不透明。
linewidths :散点(标记)的边框的宽度
verts:
edgecolors :散点(标记)的边框颜色
hold:
data:
**kwargs:
画散点图的具体案例:
北京2016年3,10月份每天白天的最高气温(分别位于列表y1,y2),那么此时如何寻找出气温和随时间(天)变化的某种规律?
附注:题目和数据来源于网络课程
import matplotlib.pyplot as plt
def all_title(xlabel, ylabel, title):
plt.xlabel(xlabel) #x轴标题
plt.ylabel(ylabel) #y轴标题
plt.title(title) #总标题
#画图框架
plt.figure(figsize = (20