matplotlib绘图

matplotlib学习笔记

  • 一、概念问题
  • 二、细节问题
    • 1、画图中文显示问题
      • 1)使用matplotlib.rc
      • 2)使用font_manager
    • 2、一张图显示多组数据
  • 二、新内容新知识
    • 1、绘制散点图
    • 2、绘制条形图
    • 3、绘制直方图
    • 4、其他绘制工具
  • 参考资料

这一块主要用于记录自己利用这段空闲时间,进一步提高自己matplotlib画图能力,对一些模糊问题进行重新学习及强化。

一、概念问题

二、细节问题

绘制折线图过程中的细节问题

1、画图中文显示问题

共有两种方法:

1)使用matplotlib.rc

在代码前面添加

font = {'family': 'MicroSoft YaHei',
        'weight': 'bold',
        }
matplotlib.rc('font',**font)

2)使用font_manager

from matplotlib import pyplot as plt
# 先使用fc-list :lang=zh 命令在终端查看,中文字体在电脑中的位置。
my_font=font_manager.FontProperties(fname='C:/Windows/fonts/HGZY_CNKI.TTF')
plt.xticks(fontproperties=my_font)

2、一张图显示多组数据

(1)在一种图中显示多条曲线

from matplotlib import pyplot as plt
x=[1,2,3,4,5]
y1=[1,1,1,2,3]
y2=[2,2,5,6,8]
plt.plot(x,y1,label='第一代')
plt.plot(x,y2,label='第二代')

(2)设置曲线图例:运行上面的代码会发现,曲线的含义即图例,并没有显示出来,还需要做如下处理:

plt.plot(x,y1,label='第一代')
plt.plot(x,y2,label='第二代')
plt.legend()

(3)曲线图例中文显示:运行上述代码会发现,图例可以显示,但是中文含义却不能正常显示,于是需要对图例的字体进行处理:

# my_font上面的代码定义过
plt.legend(prop=my_font)

(4)曲线图例位置设置:loc是对图例的位置进行设置,有多个位置可以选择。
‘best’:0---- “upper right”:1----“upper left”:2------“lower left”:3---------“lower right”:4
“right”:5----“center left”:6-----“center right”:7----“lower center”:8----“upper center”:9
“center”:10

# my_font上面的代码定义过
plt.legend(prop=my_font,loc='upper right')
# plt.legend(prop=my_font,loc=1)

(5)曲线颜色更改:red、white、green、blue等
线条格式更改:“—.”、“–”等
线条粗细更改:如linewidth=5
透明度更改:alpha=0…2

plt.plot(x,y1,label='第一代',color='red',linestyle='--',linewidth=5,alpha=0.2)

补充
(1)在图中设置网格,可以使用:plt.grid()
(2)对图中网格的清晰度进行设置,可以使用alpha,alpha最大值为1,最小值为0,值越大越清晰,如:plt.grid(alpha=0.1)
(3)设置图片大小和分辨率:plt.figure(figsize=(20,8),dpi=80)
(4)保存图片:plt.savefig('./result.png').将文件保存到当前文件夹中。
(5)设置x轴、y轴、title的总的含义:plt.xlabel('时间')plt.ylabel('个数')plt.title('对应时间的个数')
(6)设置x轴、y轴的刻度:plt.xticks(x,x_lable,rotation=45,fontproperties=my_font)


除了折线图之外,matplotlib还可以绘制散点图、柱状图、直方图、饼图、箱线图等

二、新内容新知识

1、绘制散点图

使用scatter函数

plt.scatter(x,y,label='第一代')

其余地方与plt.plot()一样。

2、绘制条形图

# 竖着的条形图
plt.bar(x,y,width=0.5,color='orange')
# 横着的条形图
plt.barh(x,y,height=0.2,color='orange')

3、绘制直方图

组数:将数据分组,分组的个数。
组距:每个小组的两个端点的距离。
组数 = 极差 / 组距 =(最大值 - 最小值)/ 组距

x=[1,5,2,6,4,9,45,64,2]		# 原始数据
# 计算组数
d=5   # 组距
num_bins=(max(x)-min(x))//d		# 组数
plt.hist(x,num_bins)

频率直方图

plt.hist(a,num_bins,density=True)

4、其他绘制工具

plotly:https://plotly.com/python/
matplotlib其他示例:https://matplotlib.org/stable/gallery/index.html
seaborn:http://seaborn.pydata.org/

参考资料

1、学习视频

你可能感兴趣的:(Python,matplotlib,python)