matplotlib数据可视化实战——折线图+散点图_不愿透露姓名的小段的博客-程序员宝宝

技术标签: python入门  数据分析  数据可视化  

今天通过几个实践样例学习了使用matplotlib绘制图像。
过程中出现了很多问题,但是都通过查阅资料一一解决了。最后看到绘制好的图像弹出来以后,内心还是有点小激动。

字体调用问题:

1.导入数据库

from matplotlib.font_manager import FontProperties

2.调用本机字体库

myfont=fm.FontProperties(fname=r'C:\Windows\Fonts\simfang.ttf',size=12)#通常在C:\Windows\Fonts下可以找到本机字体,选中其中一个字体,右键-属性,查看文件类型及字体名称,把这两个加到路径中即可,类似C:\Windows\Fonts\simfang.ttf,其中simfang是字体名,ttf是文件类型。

3.之后每次使用字体可之间用myfont代替

plt.xlabel('顾客购买数量(件)',fontproperties=myfont)

绘制折线图

题目描述
在这里插入图片描述
代码实现:

import matplotlib.pyplot as plt
import matplotlib.font_manager as fm #用来导入图例
from matplotlib.font_manager import FontProperties
myfont=fm.FontProperties(fname=r'C:\Windows\Fonts\simfang.ttf',size=12)
#进价与零售价
basePrice,salePrice=49,75
#计算购买num个商品时的单价,买的越多,单价越低
def compute(num):
    return salePrice*(1-0.01*num)
numbers=list(range(1,31))#存储顾客购买数量
earns=[]#存储商场盈利情况
totalConsumption=[]#存储顾客消费总金额
saves=[]#存储顾客节省的总金额
#根据顾客购买数量计算三组数据
for num in numbers:
    perPrice=compute(num)
    earns.append(round(num*(perPrice-basePrice),2))
    totalConsumption.append(round(num*perPrice,2))
    saves.append(round(num*(salePrice-perPrice),2))#round函数是对数据进行四舍五入,2指保留两位小数
#绘制商家盈利和顾客节省的折线图,系统自动分配线条颜色
plt.plot(numbers,earns,label='商家盈利')
plt.plot(numbers,totalConsumption,label='顾客总消费')
plt.plot(numbers,saves,label='顾客节省')
#设置坐标轴标签

plt.xlabel('顾客购买数量(件)',fontproperties=myfont)#用fontproperties指定中文字体
plt.ylabel('金额(元)',fontproperties=myfont)
#设置图形标题
plt.title('数量-金额关系图',fontproperties=myfont,fontsize=20)#fontsize指定标题字号
#创建字体,设置图例

plt.legend(prop=myfont)#legend函数来设置图例
#计算并标记商家盈利最多的批发数量
maxEarn=max(earns)
bestNumbers=numbers[earns.index(maxEarn)]#index函数来找出maxEarn在earns中的位置
plt.scatter([bestNumbers],[maxEarn],marker='*',color='red',s=120)#用绘制散点图的方式进行标记
#使用annotate()函数在指定位置进行文本标注
plt.annotate(xy=(bestNumbers,maxEarn),#箭头终点坐标
             xytext=(bestNumbers-1,maxEarn+200),#箭头起点坐标
             s=str(maxEarn),#注释文本
             arrowprops=dict(arrowstyle='<-'))#设置箭头形状
plt.show()#显示图像

图像显示:
在这里插入图片描述

绘制散点图

题目描述
在这里插入图片描述
代码实现


import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
from matplotlib.font_manager import FontProperties
myfont=fm.FontProperties(fname=r'C:\Windows\Fonts\simfang.ttf',size=12)
xs=[]
ys=[]
strengths=[]
# 读取文件中的数据
with open(r'C:\Users\ht\PycharmProjects\图像绘制用的数据\散点图数据.txt') as fp:
    for line in fp:
        x,y,strength=map(int,line.split(','))
        xs.append(x)
        ys.append(y)
        strengths.append(strength)#把文件中的数据分别添加到列表中
#绘制散点图
for x,y,s in zip(xs,ys,strengths):
    if s<40:
        color='r'
    elif s<70:
        color='b'
    else:
        color='g'
    plt.scatter(x,y,s=s*3,c=color,marker='*')#这里的s表示散点符号的大小
plt.xlabel('长度坐标',fontproperties=myfont,fontsize=10)
plt.ylabel('宽\n度\n坐\n标',fontproperties=myfont,fontsize=10,
           rotation='horizontal')#rotation用来设置文字方向
plt.title('商场内信号强度',fontproperties=myfont,fontsize=14)
plt.show()

图像显示

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_46132949/article/details/107780795

智能推荐

作为一个合格的Web前端工程师,需要具备哪些技能呢?_weixin_30821731的博客-程序员宝宝

那么作为一个合格的Web前端工程师,需要具备哪些技能呢?  HTML5  HTML是超级文本标记语言,是为“网页创建和其他可在网页浏览器中看到的信息”设计的语言。HTML5是由万维网发布的最新的语言规范,是开放的Web网络平台的奠基石,所以做Web前端,精通HTML5是必须要掌握的一项技能。  CSS3  CSS即层叠样式表。在网页制作时采用层叠样式表技术,可以有效地对页面的布局...

Git基础学习之Gitee的使用和设置SSH公钥_狂奔の蜗牛rz的博客-程序员宝宝_giteessh公钥怎么用

6.1 注册和使用gitee6.1.1 注册gitee账号1.什么是Gitee?Gitee又叫码云,但此“码云”非彼“马云”,并不是阿里的马云,而是一个基于Git的代码托管和研发协作平台官方网址:https://gitee.com/2.注册码云账号进入登录页面后,点击注册注册一个你的账号,使用手机号或者邮箱即可注册!这里我已经注册过了,所以就直接登录我的账号了!3.查看开源项目码云不仅是一个代码托管平台,同时也是一个开源项目交流社区,你可以在这里免费查看和下载别人的开源项目!查_1671465600

cocoscreate使用资料整理与总结_iamgamer的博客-程序员宝宝

一.如果遇到如图的问题,说明之前用旧版本构建了native项目,因此如果换了新版本,需要把旧的native删除,重新构建即可。二.构建windows版本,会出现windows sdk版本问题,如果正好与ccc一致那么没什么问题,如果不一致,那么先用ccc构建出项目,然后用vs打开,重定向后,再用ccc编译,即可。三.如果不以h5版本为主,以客户端平台为主的话,还是回归传统文件读取,这样省时...

linux 添加用户主目录,linux下修改用户主目录的方法_Zz 911的博客-程序员宝宝

linux下修改用户主目录的方法第一,修改/etc/passwd文件第二,usermod命令具体方法:第一种方法:vi /etc/passwd找到要修改的用户那几行,修改掉即可。此法很暴力,建议慎用。/etc/passwd文件格式登录名:加密口令:数字用户ID:数字组ID:注释字段:起始目录:shell程序用此方法修改了用户宿主目录后,会出现某些异常,如:bash环境异常,需要将用户原宿主目录下的...

编译 arm 版的qt_newkelt的博客-程序员宝宝_qt 动态编译 arm

因为项目需要,我们需要在开发板上使用QT开发平

随便推点

RDMA over Commodity Ethernet at Scale (II)_upupday19的博客-程序员宝宝

3.  DSCP-BASEDPFC在本小节中,我们测试了原始的基于VLAN的PFC面对的问题,并提出了基于DSCP的PFC方案。基于VLAN的PFC暂停帧中,VLAN TAG中包含了数据包优先级和VID,但是优先级和VID在部署中引发了两个严重的问题,因此提出了基于DSCP的PFC方案。暂停帧是一个二层帧,并没有VLAN标签,数据包的VLAN标签有四部分,TPID被固定为0x8100,DE

关于J2EE程序员的武器探讨_iteye_9770的博客-程序员宝宝

武器者,乃工具也!  “工欲善其事,必先利其器”,80%以上在江湖上混的J2EE程序员,肯定都有一两把武器在手上,也就是精通一两种工具的应用。有20%以下的赤手空拳者,功力一般都非常深厚、可谓高手中的高手,少之又少,有的甚至不出手,尽靠一张嘴,也能吓唬无数敌人,好比“铁掌水上漂”裘千仞及“首席忽悠官”裘千丈。            说到j2ee开发工具,可谓五花八门,各有千秋。每一样都描述得天...

Linq入门_七月流萤的博客-程序员宝宝_linq语法入门

一、介绍 LINQ 查询  查询是一种从数据源检索数据的表达式。随着时间的推移,人们已经为各种数据源开发了不同的语言;例如,用于关系数据库的 SQL 和用于 XML 的 XQuery。因此,开发人员不得不针对他们必须支持的每种数据源或数据格式而学习新的查询语言。LINQ 通过提供一种跨数据源和数据格式使用数据的一致模型,简化了这一情况。在 LINQ 查询中,始终会用到对象。可以使用相同的编

【OpenCV】Qt + OpenCV 开发配置 + 入门知识(代码示例)_猿力猪的博客-程序员宝宝_qt+opencv

本文主要学习 Windows下Qt + OpenCV的开发环境的相关配置,以及OpenCV入门相关案例包括 OpenCV图像原理、基础图像操作、案例实现

Python面向对象练习-士兵开枪问题_FR52的博客-程序员宝宝

1)需求:1.士兵瑞恩有一把AK472.士兵可以开火(士兵开火扣动的是扳机)3.枪能够发射子弹–把子弹发射出去4.枪能够装填子弹–增加子弹的数量2)分析:由于士兵瑞恩有一把AK47,士兵可以开火。故应该创建两个类:一个是士兵类,一个是枪类枪类(Gun):(1)属性:型号(model),弹夹中子弹的数目(bullet_count)(2)方法:射击子弹(shoot),添加子弹(add...

python selenium 登录12306_Thg_nice的博客-程序员宝宝_656qp.cc开挂

记录一下使用python + selenium 登录12306网站的基本步骤:打开链接点击账号登录按钮截取整个屏幕图片将验证码的图片从截取到的屏幕图片中扣出来使用验证码平台识别验证码根据返回的坐标模拟点击验证码输入用户名密码,点击登录主程序import time, osfrom PIL import Imagefrom pyquery import PyQuery as ...

推荐文章

热门文章

相关标签