基于python的matplotlib、numpy库实现的图形绘制(数据可视化)

这篇具有很好参考价值的文章主要介绍了基于python的matplotlib、numpy库实现的图形绘制(数据可视化)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、sin,cos函数

1.题目要求

编写程序,绘制正弦曲线和余弦曲线。

提示:利用numpy的linspace()、sin()或cos()函数生成样本数据、正弦或余弦值。

2.函数讲解及代码

import matplotlib.pyplot as plt
import numpy as np

#linspace函数是用于生成一个等差数列的函数。它的作用是将给定的区间等分成若干份,然后返回这些点的坐标值,从而得到一个等差数列。linspace函数的参数包括起始点、终止点和要生成的点的个数等。
#np.linspace(起始值,最终值,取点数)
x = np.linspace(-np.pi, np.pi, num=256)
#np.pi就表示为Π,创建x数组,去-Π到Π等间隔的256个数(如不定义num,默认值为50)
y = np.sin(x)
z = np.cos(x)

#设置x轴的刻度范围和刻度标签
#xlim(left=None,right=None,emit=Ture,auto=Flase,*,xmin=None,xmax=None)
#left/right:表示x轴刻度取值区间的左位数/右位数
#emit:表示是否通知限制变化的观察者,默认为True
#auto:表示是否允许自动缩放x轴,默认值为Ture
plt.xlim(x.min()*1.5, x.max()*1.5)
#刻画刻度取值范围,最小值前取1.5,最大值后取1.5

#xticks(tick=None, lable=None, **kwargs)
#ticks:表示刻度显示的位置列表,该参数可以设置为空列表,以此禁用x轴的刻度
#labels:表示指定位置刻度的标签列表
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi], [r'$-\pi$', r'$-\pi/2$', 0, r'$\pi/2$', r'$\pi$'])
#第一个列表表示刻度名称,第二个列表刻画图上刻度位置

plt.plot(x, y)
plt.plot(x, z)
plt.show()

 3.运行图样

matplotlib绘制sin和cos函数,python,numpy,matplotlib

4.扩展

x = np.linspace(-np.pi, np.pi, num=256)
print(x)
#加上print看看linspace函数的输出
#改变num的数值为1,2,10,50,100

plt.xlim(x.min()*1.5, x.max()*1.5)
#将代码中此行替换为
plt.xlim(x.min(), x.max())
plt.xlim(x.min()*2, x.max()*1.5)
plt.xlim(x.min()*1, x.max()*1.5)
#进行对xlim函数的理解

二、柱状图

1.题目要求

已知实验中学举行了高二期中模拟考试,考试后分别计算了全体男生、女生各科的平均成绩,统计结果如表1所示。

表1 全校高二男生、女生的平均成绩

学科

平均成绩(男)

平均成绩(女)

语文

85.5

94

数学

91

82

英语

72

89.5

物理

59

62

化学

66

49

生物

55

53

按照以下要求绘制图表:

(1)绘制柱形图。柱形图的x轴为学科,y轴为平均成绩。

(2)绘制堆积柱形图。堆积柱形图的x轴为学科,y轴为平均成绩。

2.函数讲解及代码

(1)柱形图

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = [u'SimHei']
#避免图例中无法显示中文

bar_wight = 0.3
x_title = ["语文", "数学", "英语", "物理", "化学", "生物"]

y_boy = np.array([85.5, 91, 72, 59, 66, 55])
y_girl = np.array([94, 82, 89.5, 62, 49, 53])
x_value = np.arange(len(x_title))

plt.bar(x_value, y_boy, tick_label=x_title, width=bar_wight, label="男生")
plt.bar(x_value+bar_wight, y_girl, width=bar_wight, label="女生")

#向每个柱形的顶部添加注释文本,标注平均成绩
for a, b, c in zip(x_value, y_boy, y_girl):
    # zip函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
    plt.text(a - bar_wight/2, b, y_boy[a], fontsize=9)
    plt.text(a + bar_wight/2, c, y_girl[a], fontsize=9)
    # text(x, y, s, **kwargs)
    #x,y定位
    #s要显示的内容

plt.xticks(x_value+bar_wight/2, x_title)
#将x轴刻度标签放在两组柱形中间
plt.axhline(y=(85.5+91+72+59+66+55+94+82+89.5+62+49+53)/12, linestyle='--', label='平均成绩')
#在轴上添加一条直线
plt.ylabel("平均成绩(分)")

plt.title("高二男生、女生的平均成绩")
plt.legend()
plt.show()

(2)堆积柱形图

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = [u'SimHei']
girl = plt.bar([1, 2, 3, 4, 5, 6], [94, 82, 89.5, 62, 49, 53], label="女生")
boy = plt.bar([1, 2, 3, 4, 5, 6], [85.5, 91, 72, 59, 66, 55], bottom=[94, 82, 89.5, 62, 49, 53], label="男生")
plt.xticks([1, 2, 3, 4, 5, 6], ["语文", "数学", "英语", "物理", "化学", "生物"])

plt.xlabel("学科")
plt.ylabel("平均成绩")

plt.legend()
plt.show()

 3.运行图样

(1)柱状图

matplotlib绘制sin和cos函数,python,numpy,matplotlib

(2)堆积柱状图 

matplotlib绘制sin和cos函数,python,numpy,matplotlib

三、饼状图

1.题目要求

拼多多作为互联网电商的一匹黑马,短短几年用户的规模已经超过3亿。2019年9月拼多多平台对所有子类目的销售额进行了统计,结果如表2所示。

表2 拼多多平台子类目的销售额

子类目

销售额(亿)

童装

29665

奶粉辅食

3135.4

孕妈专区

4292.4

洗护喂养

5240.9

宝宝尿裤

5543.4

春夏新品

5633.8

童车童床

6414.5

玩具文娱

9308.1

童鞋

10353

根据表2的数据绘制一个反映拼多多平台子类目销售额占比情况的饼图。

2.函数讲解及代码

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams["font.sans-serif"] = [u'SimHei']
y = np.array([29665, 3135.4, 4292.4, 5240.9, 5543.4, 5633.8, 6414.5, 9308.1, 10353])
title = np.array(["童装", "奶粉辅食", "孕妈专区", "洗护喂养", "宝宝尿裤", "春夏新品", "童车童床", "玩具文娱", "童鞋"])

plt.figure(dpi=100, figsize=(10, 8))
plt.pie(y, autopct='%.2f%%')

plt.legend(title, loc='upper right', ncol=5)

plt.table(cellText=[y],
          colWidths=[0.1] * 9,
          rowLabels=['单位:亿元'],
          colLabels=title,
          loc='lower center'
          )

plt.title("拼多多平台子类目的销售额")
plt.show()

3.运行图样

 matplotlib绘制sin和cos函数,python,numpy,matplotlib

四、折线图

1.题目要求

下表为郑州近一个月天气,根据要求绘制图形。

城市

日期

白天

夜间

天气状况

风力方向

最高温度

天气状况

风力方向

最低温度

郑州

2022-04-07

 晴

南风 1-2级

25℃

南风 1-2级

 13℃

郑州

2022-04-06

 晴

东北风 3-4级

23℃

东北风 3-4级

 10℃

郑州

2022-04-05

 晴

西北风 1-2级

29℃

西北风 1-2级

 12℃

郑州

2022-04-04

 多云

南风 3-4级

24℃

多云

南风 3-4级

 14℃

郑州

2022-04-03(星期日)

 晴

南风 3-4级

22℃

多云

南风 3-4级

 9℃

郑州

2022-04-02(星期六)

 晴

北风 3-4级

19℃

北风 3-4级

 5℃

郑州

2022-04-01

 多云

南风 3-4级

18℃

南风 3-4级

 7℃

郑州

2022-03-31

 阴

东北风 1-2级

15℃

多云

东北风 1-2级

 6℃

郑州

2022-03-30

 阴

东北风 3-4级

19℃

东北风 3-4级

 9℃

郑州

2022-03-29

 多云

南风 3-4级

22℃

南风 3-4级

 10℃

郑州

2022-03-28

 多云

南风 3-4级

18℃

多云

南风 3-4级

 9℃

郑州

2022-03-27(星期日)

 多云

东北风 1-2级

15℃

多云

东北风 1-2级

 6℃

郑州

2022-03-26(星期六)

 多云

西风 3-4级

20℃

多云

西风 3-4级

 8℃

郑州

2022-03-25

 小雨

北风 1-2级

13℃

北风 1-2级

 8℃

郑州

2022-03-24

 多云

南风 1-2级

19℃

小雨

南风 1-2级

 9℃

郑州

2022-03-23

 晴

南风 3-4级

19℃

南风 3-4级

 6℃

郑州

2022-03-22

 阴

西南风 3-4级

12℃

西南风 3-4级

 3℃

郑州

2022-03-21

 小雨

东北风 1-2级

8℃

东北风 1-2级

 3℃

郑州

2022-03-20(星期日)

 阴

东南风 1-2级

10℃

东南风 1-2级

 5℃

郑州

2022-03-19(星期六)

 阴

东北风 1-2级

7℃

东北风 1-2级

 3℃

郑州

2022-03-18

 多云

南风 3-4级

13℃

多云

南风 3-4级

 3℃

郑州

2022-03-17

 阴

东北风 3-4级

9℃

东北风 3-4级

 3℃

郑州

2022-03-16

 小雨

东北风 4-5级

16℃

小雨

东北风 4-5级

 3℃

郑州

2022-03-15

 多云

西北风 1-2级

24℃

西北风 1-2级

 12℃

郑州

2022-03-14

 多云

西北风 3-4级

23℃

多云

西北风 3-4级

 11℃

郑州

2022-03-13(星期日)

 多云

东风 3-4级

22℃

小雨

东风 3-4级

 9℃

郑州

2022-03-12(星期六)

 小雨

东风 1-2级

20℃

多云

东风 1-2级

 9℃

郑州

2022-03-11

 晴

东风 3-4级

25℃

东风 3-4级

 12℃

郑州

2022-03-10

 多云

南风 1-2级

24℃

南风 1-2级

 10℃

郑州

2022-03-09

 多云

东南风 3-4级

22℃

多云

东南风 3-4级

 10℃

使用折线图绘制三十天的最高温度和最低温度变化图,纵坐标为温度,横坐标为日期。

2.函数讲解及代码

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams["font.sans-serif"] = [u'SimHei']
plt.rcParams['axes.unicode_minus'] = False

fig = plt.figure(figsize=(15, 10), dpi=90)
x_data = np.array(["03-09", "03-10", "03-11", "03-12", "03-13", "03-14", "03-15", "03-16", "03-17", "03-18", "03-19", "03-20", "03-21", "03-22", "03-23", "03-24", "03-25", "03-26", "03-27", "03-28", "03-29", "03-30", "03-31", "04-01", "04-02", "04-03", "04-04", "04-05", "04-06", "04-07"])
max = np.array([22, 24, 25, 20, 22, 23, 24, 16, 9, 13, 7, 10, 8, 12, 19, 19, 13, 20, 15, 18, 22, 19, 15, 18, 19, 22, 24, 29, 23, 25])
min = np.array([10, 10, 12, 9, 9, 11, 12, 3, 3, 3, 3, 5, 3, 3, 6, 9, 8, 8, 6, 9, 10, 9, 6, 7, 5, 9, 14, 12, 10, 13])
plt.ylim(-5, 40)
plt.grid(axis='y')
plt.annotate("最高温", xy=("03-20", 10), xytext=("03-20", 15), arrowprops=dict(arrowstyle="->"))

plt.plot(x_data, max, marker=".", label='一天之内的最高温')
plt.plot(x_data, min, marker=".", label='一天之内的最低温')
plt.xlabel("日期")
plt.ylabel("温度/℃")

plt.legend()
plt.show()

3.运行图样

 matplotlib绘制sin和cos函数,python,numpy,matplotlib

五、自定义布局构建子图

 1.题目要求

按照自定义的布局结构绘制子图,具体如图1:

matplotlib绘制sin和cos函数,python,numpy,matplotlib

图1 自定义的布局结构 

2.函数讲解及代码

import matplotlib.pyplot as plt
fig = plt.figure()

ax1 = plt.subplot2grid((3, 4), (0, 0), colspan=4)
ax2 = plt.subplot2grid((3, 4), (1, 0), colspan=2)
ax3 = plt.subplot2grid((3, 4), (1, 2), colspan=2)
ax4 = plt.subplot2grid((3, 4), (2, 0), colspan=1)
ax5 = plt.subplot2grid((3, 4), (2, 1), colspan=3)

fig.tight_layout()
plt.show()

3.运行图样

matplotlib绘制sin和cos函数,python,numpy,matplotlib

 六、绘制动态图

1.题目要求

绘制一个具有动画效果的图表,具体要求如下:

1>绘制一条正弦曲线;

2>绘制一个红色圆点,该圆点最初位于正弦曲线的左端;

3>制作一个圆点沿曲线运动的动画,并时刻显示圆点的坐标位置。

2. 函数讲解及代码

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation


# 指定渲染环境


# %matplotlib notebook # Warning: Cannot change to a different GUI toolkit: notebook. Using qt5 instead.
# %matplotlib inline

# 添加动画点
def update(num):
    # if num%5==0:
    #     point_ani.set_marker("*")
    #     point_ani.set_markersize(12)
    # else:
    #     point_ani.set_marker("o")
    #     point_ani.set_markersize(8)

    point_ani.set_data(x[num], y[num])
    text_pt.set_text("x=%.3f, y=%.3f" % (x[num], y[num]))
    # 设置文本字符串 s。它可能包含换行符 () 或 LaTeX 语法中的数学运算
    return point_ani, text_pt,


x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)

fig = plt.figure(tight_layout=True)
plt.plot(x, y)
point_ani, = plt.plot(x[0], y[0], 'ro')
plt.grid(ls="--")
text_pt = plt.text(4, 0.8, '', fontsize=16)  # 点的位置以文本形式输出

ani = animation.FuncAnimation(fig, update, np.arange(0, 100), interval=100, blit=False)

# ani.save('sin_test3.gif', writer='imagemagick', fps=10)
plt.show()

3.运行图样(部分)

matplotlib绘制sin和cos函数,python,numpy,matplotlib文章来源地址https://www.toymoban.com/news/detail-721094.html

到了这里,关于基于python的matplotlib、numpy库实现的图形绘制(数据可视化)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python数据可视化(三)绘制统计图形大全

    以 Python 代码的形式讲解柱状图的绘制原理,这里重点讲解 bar()函数的使用方法。 代码: 运行结果: 为了展示图表里的中文字体,我们选择字体“SimHei”, 通 过 “mpl.rcParams[\\\"font.sans-serif\\\"] =[\\\"SimHei\\\"]”完成字体配置任务。不使用默认的“Unicode minus”模式来处理坐标轴轴线的刻

    2024年02月02日
    浏览(33)
  • python气象数据可视化学习笔记8——利用matplotlib和ERA5数据绘制时间-高度气象综合廓线图

    气象预报业务中,有种常用的综合廓线图,其本质上是单个站点时间-高度的等高线或者填色图,其中时间是从右到左来看。所以准备好(time, level)的二维数据,然后依次叠加线条和填色就可以,思路很简单,但是绘图中涉及到了很多细节问题,也是琢磨了一阵子,怕以后忘了

    2024年02月05日
    浏览(31)
  • #python# #Matplotlib# 常用可视化图形

    工作中,我们经常需要将数据可视化,分享一些Matplotlib图的汇总,在数据分析与可视化中是非常有用。 如下协一些常用图形。 安装相关插件 Scatteplot是用于研究两个变量之间关系的经典和基本图。如果数据中有多个组,则可能需要以不同颜色可视化每个组。在Matplotlib,你可

    2024年02月13日
    浏览(24)
  • Python学习笔记(11-2):matplotlib绘图——图形绘制函数

    因为部分图形绘制函数共用了一套参数体系,在颜色、曲线形状等部分的使用方式也是一致的。所以,在讲解各类图形绘制之前,我们整体性地对各类通用参数进行一个整理,并在此基础上对于颜色(color)、数据点标记(marker)和曲线形式(linestyle)等几个通用参数进行相

    2024年02月06日
    浏览(39)
  • 【Python数据可视化】matplotlib之设置子图:绘制子图、子图共享x轴坐标、调整子图间距、设置图片大小

    文章传送门 Python 数据可视化 matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图 matplotlib之设置坐标:添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值 matplotlib之增加图形内容:设置图例、设置中文标题、设置网格效果 matplo

    2024年01月18日
    浏览(45)
  • python的matplotlib绘制动态图形(用animation中的FuncAnimation)

    %matplotlib auto # 数据透视表: # 统计各月每天的刷卡金额之和 # month_day_df = pd.pivot_table(data_df,values=\\\"刷卡金额\\\",index=\\\"日\\\",columns=\\\"月份\\\",aggfunc=np.sum) # 用折线图表示1月份每天的刷卡金额之和 import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation # 导入动画库 import random import

    2023年04月18日
    浏览(36)
  • Python使用Matplotlib库绘制双y轴图形(柱状图+折线图)

    今天是第一次写 踩坑日记 系列,这个系列用来记录在Python和R学习过程中遇到的问题和结果。今天介绍的是使用Python的matplotlib库绘制两个y轴图的一些基本用法与踩坑行为。希望可以帮助到大家,也希望大家可以给出建议,欢迎留言交流。 Matplotlib是Python数据分析中常用的可视

    2024年02月15日
    浏览(24)
  • 【数据可视化】动手用matplotlib绘制关联规则网络图

    下载文中数据、代码、绘图结果 如果想知道本文的关联规则数据是怎么来的,请阅读这篇文章 Python中似乎没有很方便的绘制网络图的函数。 下面是本人自行实现的绘图函数,如果想要运行,请点击上文的链接,下载数据和代码。 传入一个关联规则数据的DataFrame,这个DataF

    2024年03月11日
    浏览(70)
  • 基于Python的疫情数据可视化(matplotlib,pyecharts动态地图,大屏可视化)

    有任何学习问题可以加我微信交流哦!bmt1014 1、项目需求分析 1.1背景 2020年,新冠肺炎疫情在全球范围内爆发,给人们的健康和生命带来了严重威胁,不同国家和地区的疫情形势也引起了广泛的关注。疫情数据的监测和分析对疫情防控和科学防治至关重要。本报告以疫情数据

    2024年02月05日
    浏览(34)
  • 【100天精通python】Day39:GUI界面编程_PyQt 从入门到实战(下)_图形绘制和动画效果,数据可视化,刷新交互

    目录 专栏导读  6 图形绘制与动画效果 6.1 绘制基本图形、文本和图片

    2024年02月12日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包