- matplotlib
- 一、常用统计图形的对比
- 二、绘制折线图、散点图、直方图、条形图
- 三、加亿点点细节
- 四、一个完整的例子
导入pyplot:import matplotlib.pyplot as plt
一、常用统计图形的对比| 图形 | 主要运用 |
|---|---|
| 散点图 | 寻找变量(x,y)的关系,联系、展示离群点 |
| 折线图 | 展示变化 |
| 条形图 | 统计离散的数据 |
| 直方图 | 统计连续的数据 |
1.折线图:plt.plot(x,y)
2.散点图:plt.scatter(x,y)
3.条形图:plt.bar(x,y,width)
4.横向条形图:plt.barh(x,y,height),width、height表示线条的粗细
5.直方图:plt.hist(data,bins,normed),data:数据,bins:直方图中条形的个数,normed:是否将直方图的频数转换成频率
**组距的选择:**根据实际情况选择,一般分为20组左右
组数的计算:(最大值-最小值)/组距 【最好能被整除,否则会发生偏移】
1.引用中文字体
from matplotlib import font_manager plt.rcParams['font.sans-serif'].insert(0,'Microsoft YaHei')#微软雅黑 plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
①matplotlib.rc
②font_manager:
from matplotlib import font_manager my_font=font_manager.FontProperties(fname="")
使用:要显示中文的地方添加fontproperties=my_font,图例中使用prop=my_font
2.figsize 设置图形的大小:fig = plt.figure(figsize=(a, b), dpi=dpi),a 为图形的宽, b 为图形的高,单位为英寸,dpi 为设置图形每英寸的点数(分辨率)
设置矢量图,让图像更清晰: config InlineBackend.figure_format='svg'
3.plt.xticks() 调整x(y)的刻度
①调整间距:传一个参数(包含数字的可迭代对象),步长合适即可
②添加字符串到x(y)轴:传入两个参数,分别是两个可迭代对象,数字和字符串最终会一一对应,只显示字符串
③rotation:设置x(y)轴坐标轴标签的角度
4.在一个图上绘制多个图形: 多次调用plt.plot(),图例:plot(label="标签"),添加图例plot.legend(Loc,prop):Loc表示图例位置
5.设置网格线:plt.grid()
6.图形样式:
①color
②linestyle
③alpah:设置透明度,从0到1
④linewidth:线的宽度
7.添加图形的描述:
①plt.xlabel()
②plt.ylabel()
③plt.title()
8.保存图片plt.savefig(“file_path”): ①plt.savefig(“xx.svg”)(高清) ② plt.savefig(“xx.png”)(压缩图片)
9.matplotlib的使用还可以参考:matplotlib
四、一个完整的例子from matplotlib import pyplot as plt
import random
import matplotlib
from matplotlib import font_manager
#windws和linux设置字体的方法
# font = {'family' : 'MicroSoft YaHei',
# 'weight': 'bold',
# 'size': 'larger'}
# matplotlib.rc("font",**font)
# matplotlib.rc("font",family='MicroSoft YaHei',weight="bold")
#另外一种设置字体的方式
#my_font = font_manager.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")
x = range(0,120)
y = [random.randint(20,35) for i in range(120)]
#设置图形大小
plt.figure(figsize=(20,8),dpi=80)
#画出折线图
plt.plot(x,y)
#调整x轴的刻度
_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]
#取步长,数字和字符串一一对应,数据的长度一样
plt.xticks(list(x)[::3],_xtick_labels[::3],rotation=45,fontproperties=my_font) #rotaion旋转的度数
#添加描述信息
plt.xlabel("时间")
plt.ylabel("温度 单位(℃)")
plt.title("10点到12点每分钟的气温变化情况")
plt.show()



