专栏首页python3matplotlib简单示例

matplotlib简单示例

一、简介

以下引用自百度百科

Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形 。 通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。

二、流程

1. 明确要研究的问题 2. 选择需要使用什么图形(折线图、直方图……)来呈现 3. 准备相应的数据 4. 绘制图形和完善美化图形

在某些情况下,个人认为还有最后一点,是从图中可以得出什么结论。 以下只是简单的示例,就没有一定按照上面的流程。

三、简单示例

1.折线图

1.1 什么是折线图

以下引用自百度百科

折线图是排列在工作表的列或行中的数据可以绘制到折线图中。折线图可以显示随时间(根据常用比例设置)而变化的连续数据,因此非常适用于显示在相等时间间隔下数据的趋势。

简单来说,折线图可以反映事物的变化情况。

1.2 准备数据

数据来自国家数据,选取了1978年至2017年的研究生招生数研究生毕业生数,下面只列举了部分数据。

2017年

2016年

2015年

2014年

2013年

...

研究生招生数(万人)

80.6103

66.7064

64.5055

62.1323

61.1381

...

研究生毕业生数(万人)

57.8045

56.3938

55.1522

53.5863

51.3626

...

1.3 绘制完善图形

附上代码,看注释吧。

from matplotlib import pyplot as plt
from matplotlib import font_manager

# matplotlib默认不支持中文字符,设置中文字体,参数的值为系统字体路径
my_font = font_manager.FontProperties(fname=r"C:\Windows\Fonts\simsun.ttc")

# 需要绘制的数据
x = list(range(1978, 2018))
y_recruit = list(reversed(
    [80.6103, 66.7064, 64.5055, 62.1323, 61.1381, 58.9673, 56.0168, 53.8177, 51.0953, 44.6422, 41.8612, 39.7925,
     36.4831, 32.6286, 26.8925, 20.2611, 16.5197, 12.8484, 9.2225, 7.2508, 6.3749, 5.9398, 5.1053, 5.0864, 4.2145,
     3.3439, 2.9679, 2.9649, 2.8569, 3.5645, 3.9017, 4.131, 4.6871, 2.3181, 1.5642, 1.108, 0.9363, 0.3616, 0.811,
     1.0708]))
y_graduate = list(reversed(
    [57.8045, 56.3938, 55.1522, 53.5863, 51.3626, 48.6455, 42.9994, 38.36, 37.1273, 34.4825, 31.1839, 25.5902, 18.9728,
     15.0777, 11.1091, 8.0841, 6.7809, 5.8767, 5.467, 4.7077, 4.6539, 3.9652, 3.1877, 2.8047, 2.8214, 2.5692, 3.2537,
     3.544, 3.7232, 4.0838, 2.7603, 1.695, 1.7004, 0.2756, 0.4497, 0.4058, 1.1669, 0.0476, 0.014, 0.0009]))

# 设置图形大小,dpi
plt.figure(figsize=(10,6.18),dpi=100)

# 绘制第一条折线
plt.plot(x,y_recruit,label="研究生招生数")
# 绘制第二条折线
plt.plot(x,y_graduate,
         label="研究生毕业生数",       # 图例显示内容
         color="orange",             # 线条颜色
         linewidth=3,                # 线宽
         linestyle="--")             # 线条样式

# 设置x轴刻度,rotation为旋转度数
plt.xticks(x[::2],rotation=45)

# 设置图例,prop为设置字体,fontsize为设置字体大小
plt.legend(prop=my_font,fontsize=12)

# 绘制网格,alpha为透明度
plt.grid(alpha=0.5)

# 添加描述信息,fontproperties为设置字体,fontsize为设置字体大小
plt.xlabel("年份",fontproperties=my_font,fontsize=12)
plt.ylabel("人数(万人)",fontproperties=my_font,fontsize=12)
plt.title("1978年至2017年研究生招生数和研究生毕业生数情况",fontproperties=my_font,fontsize=18)

# 显示图形
plt.show()
1.4 绘制图形结果

运行上述代码,结果如下。

2.条形图

2.1 什么是条形图

以下引用自百度百科

条形图(bar chart)是用宽度相同的条形的高度或长短来表示数据多少的图形。条形图可以横置或纵置,纵置时也称为柱形图(column chart)。此外,条形图有简单条形图、复式条形 图等形式。

简单来说,条形图可以直观地反映数据的大小。

2.2 准备数据

数据同样来自国家数据,选取了2009年、2010年和2011年各级各类学校数,具体数据如下。

2009

2010

2011

普通高等学校数(所)

2305

2358

2409

普通中学学校数(所)

70774

68881

67751

高中学校数(所)

14607

14058

13688

初中学校数(所)

56167

54823

54063

职业中学学校数(所)

5805

5273

4856

普通小学学校数(所)

280184

257410

241249

特殊教育学校学校数(所)

1672

1706

1767

学前教育学校数(所)

138209

150420

166750

2.3 绘制完善图形

代码如下:

x = ["普通高等学校数", "普通中学学校数","高中学校数",
        "初中学校数","职业中学学校数","普通小学学校数",
        "特殊教育学校数","学前教育学校数"]
y_09 = [2305,70774,14607,56167,5805,280184,1672,138209]
y_10 = [2358,68881,14058,54823,5273,257410,1706,150420]
y_11 = [2409,67751,13688,54063,4856,241249,1767,166750]

plt.figure(figsize=(10,6.18),dpi=100)
bar_width = 0.25

x_09 = list(range(len(x)))
x_10 = list(i + bar_width for i in range(len(x)))
x_11 = list(i + bar_width * 2 for i in range(len(x)))

plt.barh(x_09,y_09,height=bar_width,label="2009年")
plt.barh(x_10,y_10,height=bar_width,label="2010年")
plt.barh(x_11,y_11,height=bar_width,label="2011年")

plt.legend(prop=my_font, fontsize=12)
plt.grid(alpha=0.5,linestyle="--")
plt.yticks(x_10,x,fontproperties=my_font)
plt.xlabel("数量(所)",fontproperties=my_font,fontsize=12)
plt.title("2009年、2010年及2011年各级各类学校数情况",fontproperties=my_font,fontsize=18)

plt.show()
2.4 绘制图形结果

运行上述代码,结果如下。

3.直方图

3.1 什么是直方图

以下引用自百度百科

直方图(Histogram)又称质量分布图。是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据类型,纵轴表示分布情况。 为了构建直方图,第一步是将值的范围分段,即将整个值的范围分成一系列间隔,然后计算每个间隔中有多少值。 这些值通常被指定为连续的,不重叠的变量间隔。 间隔必须相邻,并且通常是(但不是必须的)相等的大小。

3.2 准备数据

数据选用上一篇随笔:爬取豆瓣电影信息中爬取到的电影的时长。去除无效数据后,从下图可以看出总共有2247条数据,最大值为170,最小值为3。

3.3 绘制完善图形

代码如下:

plt.figure(figsize=(10,6.18),dpi=100)

plt.hist(df["running_time"],range(0,171,10),color="#009900")

plt.xticks(range(0,171,10))
plt.yticks(range(0,650,50))

plt.grid(alpha=0.5,linestyle="--")

plt.xlabel("时长(分钟)",fontproperties=my_font,fontsize=12)
plt.ylabel("数量", fontproperties=my_font,fontsize=12)
plt.title("电影片长分布情况", fontproperties=my_font,fontsize=18)

plt.show()
3.4 绘制图形结果

运行上述代码,结果如下。

四、结语

  • 本文简单举例介绍了matplotlib绘制折线图、条形图和直方图的方法,matplotlib很强大,可以绘制非常多的图形,可以参考https://matplotlib.org/gallery/index.html
  • 如果文中有错误的地方,希望大家指出,我会积极地学习改正。
  • 最后,感谢大家的阅读!

开心一点,人间不值得

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python 画图--简单开始及折线图

           本博客转载自:http://blog.csdn.net/jenyzhang/article/details/52046372

    py3study
  • 我的Python分析成长之路10

        figure.add_subplot:添加子图,可以指定子图的行数、列数和选中图片的编号。

    py3study
  • python科学计算学习二:matplo

        博客地址:http://blog.csdn.net/ikerpeng/article/details/20523679

    py3study
  • Matplotlib

    闪电gogogo
  • Matplotlib入门

    标题中的英文首字母大写比较规范,但在python实际使用中均为小写。 2018年7月30日笔记 作者的集成开发环境是jupyter,Python版本为3.6...

    潇洒坤
  • matplotlib相关图形绘制(一)

      折线图用于显示随时间或有序类别而变化的趋势。折线图其实是由多个点连接在一起得到了,当点足够多的时候,折线图就变成了平滑的曲线。

    朱小五
  • Python数据处理从零开始----第四章(可视化)(18)一文解决柱状图barplot or barchart

    柱状图(或条形图)是最常见的图类型之一。 它显示了数值变量和类别变量之间的关系。 (1)绘制基础柱状图

    用户1359560
  • 我的Python分析成长之路10

        figure.add_subplot:添加子图,可以指定子图的行数、列数和选中图片的编号。

    py3study
  • matplotlib: 绘制平面图/表格

    JNingWei
  • plt 数据可视化

      plt.xlabel()/plt.ylabel()需要在plt.subplot()后面,否则不起作用。

    py3study

扫码关注云+社区

领取腾讯云代金券