python绘制折线图数值小数点太长_Python matplotlib画图y轴数值不按大小排列问题
matplotlib 画图的时候经常会出现y轴数据不按大小排列的问题,很混乱,这主要是因为数据类型的错误,导致的!大家可以仔细阅读下以下两个案例,就应该有答案了:
案例一:
昨天偶然做一个爬取数据,做成直方图的小练习发现,最后出来的图标Y轴并不是按顺序排列,按照老规矩,百度一下,找到了原因,一个低级的问题
import matplotlib.pyplot as plt
from matplotlib.pyplot import MultipleLocator
import bs4
import numpy as np
import matplotlib
import seaborn as sns
import requests
import pandas as pd
# import pickle
def datas() :#封装爬取数据函数,以便后续使用
url = 'https://www.iqiyi.com/dianying_new/i_list_paihangbang.html'
#按照获取的URL进行入参
res = requests.get(url)
#获取网页内容
# print(res.status_code)
#检查连接状态
bs = bs4.BeautifulSoup(res.text, 'html.parser')
#用BS解释网页
datas = bs.find('ul',class_="site-piclist").find_all('li')
#根据网页特征定位相关数据位置
data1 = {}#设置相应字典,用来装爬取到的数据并且返回
for data in datas :
mov_name = data.find('img')['title'] # 获取电影名字
try :
mov_rank = data.find('span',class_='dypd_piclist_nub dypd_piclist_nubHot').text #获取电影排名,由于前三特征与后面的不同,因此采用试错历遍相关特征
except :
mov_rank = data.find('span',class_='dypd_piclist_nub').text #同上
mov_score = data.find('span',class_='score').text #获取电影评分数据
data1[int(mov_rank)]=mov_score
return data1 # 返回获取到的数据
#-----------------------------------------------------------2.对数据进行清洗和处理---------------------------------
data_dict= datas() #提取前述数据进行处理
rate1=list(data_dict.keys())
rate2=list(data_dict.values())
d={' 排名 ':rate1,
' 评分 ':rate2}
df=pd.DataFrame(d) #将年份和比率结合一起
# print(df) #输出结果
#-----------------------------------------------------------4.对数据进行清洗和处理---------------------------------
#-----------------------------------------------------------折线图---------------------------------
# x=rate1 #设置x轴
# y=rate2
# plt.figure(figsize=(200,8),dpi=80) #设置绘制的图像和字体大小
# plt.plot(x,rate2,color = 'y',label="score")#k是黄色
# plt.xlabel("rank")#横坐标名字
# plt.ylabel("score")#纵坐标名字
# x_major_locator=MultipleLocator(10)
# #把x轴的刻度间隔设置为10,并存在变量里
# ax=plt.gca()
# #ax为两条坐标轴的实例
# ax.xaxis.set_major_locator(x_major_locator)
# #把x轴的主刻度设置为10的倍数
# plt.xlim(1,146)
# #把x轴的刻度范围设置为1到146,十倍间隔
# plt.legend(loc = "best")#图例
# plt.show()
代码为上述,但是出来的结果如图
解决方案:
经过一番查证后发现其实是爬取数据的时候评分字段的数据类型是文本= =
因此多加一个int或者float就可以解决对应问题
for data in datas :
mov_name = data.find('img')['title'] # 获取电影名字
try :
mov_rank = data.find('span',class_='dypd_piclist_nub dypd_piclist_nubHot').text #获取电影排名,由于前三特征与后面的不同,因此采用试错历遍相关特征
except :
mov_rank = data.find('span',class_='dypd_piclist_nub').text #同上
mov_score = data.find('span',class_='score').text #获取电影评分数据
data1[int(mov_rank)]=float(mov_score)
输出结果
案例二:
这是一个遇到过几次的问题,每次查完资料不做记录,结果就是每次都要浪费时间再查一次。这次做好备好。
目标:读一个文档里的数据,画个图
先上代码:
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import os
my_font = matplotlib.font_manager.FontProperties(fname = '/usr/share/fonts/opentype/noto/simsun.ttc')
model_path = '/home/will/test/score.txt'
data = []
for line in open(model_path,"r"):
det = '%.2f'%np.float(line[:-1].split(' ')[6])
data.append(det)
da = np.array(data)
x = np.arange(0, 50, 1)
plt.plot(x, da)
plt.ylabel('分数',fontproperties=my_font, fontsize = 10) # 横坐标轴的标题
plt.xlabel('帧数',fontproperties=my_font, fontsize = 18) # 纵坐标轴的标题
#plt.grid() # 显示网格
plt.show()
结果,Y轴的数据明显有问题,乱来,都不按大小排列了。
问题就出在,我从文档中读取了数据之后,保存的时候没把它保存在浮点数float的形式,错误的保存成了字符串str形式,这个问题老是不注意,以后要长记性,稍微改一下代码即可:
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import os
my_font = matplotlib.font_manager.FontProperties(fname = '/usr/share/fonts/opentype/noto/simsun.ttc')
model_path = '/home/will/test/score.txt'
data = []
for line in open(model_path,"r"):
det = '%.2f'%np.float(line[:-1].split(' ')[6])
det = float(det)
data.append(det)
da = np.array(data)
x = np.arange(0, 50, 1)
plt.plot(x, da)
plt.ylabel('分数',fontproperties=my_font, fontsize = 10) # 横坐标轴的标题
plt.xlabel('帧数',fontproperties=my_font, fontsize = 18) # 纵坐标轴的标题
#plt.grid() # 显示网格
plt.show()
然后就OK了
我的按照案例一基本上就解决了,把数据类型改成浮点型即可,具体怎么改,大家可以参考
python绘制折线图数值小数点太长_Python matplotlib画图y轴数值不按大小排列问题相关推荐
- echarts x轴像直尺一样设置刻度_Python matplotlib画图y轴数值不按大小排列问题
matplotlib 画图的时候经常会出现y轴数据不按大小排列的问题,很混乱,这主要是因为数据类型的错误,导致的!大家可以仔细阅读下以下两个案例,就应该有答案了: 案例一: 昨天偶然做一个爬取数据,做 ...
- python绘制折线图中文图例不显示_python使用matplotlib绘图时图例显示问题的解决...
前言 matplotlib是基于Python语言的开源项目,旨在为Python提供一个数据绘图包.在使用Python matplotlib库绘制数据图时,需要使用图例标注数据类别,但是传参时,会出现图 ...
- python绘制折线图中文图例不显示_python plb 教程 实现折线图 (令含有 题目,标识,颜色,中文乱码解决)源码...
1 #-*- coding: utf-8 -*- 2 importnumpy as np3 importmatplotlib.pyplot as plt4 importmatplotlib as mp ...
- 一文搞定python绘折线图(标题,自定义刻度范围,xy轴刻度值的大小,垂直xy轴的虚线,标签,图例)
1 python绘图的基础知识 1 绘制不同风格(plot函数) 线条风格 线条颜色 线条标记 2 绘图实例 import matplotlib.pyplot as plt from pylab im ...
- python 绘制折线图-怎样用python绘制折线图
今天教大家用python绘制一些线性图案,需要的朋友可以借鉴参考一下. 画最简单的直线图 代码如下:import numpy as np import matplotlib.pyplot as plt ...
- python绘制折线图先对数据进行处理_python气象数据分析并绘制折线图-女性时尚流行美容健康娱乐mv-ida网...
女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页 > 高级搜索 excel 2010巧妙处理 折 ...
- 【Python】用Python绘制折线图(插值法平滑曲线)
目录 利用绘制图表:matplotlib官网 1. 小试牛刀--柱状图 1.1 matplotlib库默认英文字体 2. 折线图绘制 2.1 读取exal方法 2.1.1 数据处理常用库 ...
- python简单代码画曲线图教程-Python绘制折线图和散点图的详细方法介绍(代码示例)...
本篇文章给大家带来的内容是关于Python绘制折线图和散点图的详细方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.绘制折线图和散点图要用到matplotlib ...
- python画折线图代码-Python绘制折线图和散点图的详细方法介绍(代码示例)
本篇文章给大家带来的内容是关于Python绘制折线图和散点图的详细方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.绘制折线图和散点图要用到matplotlib ...
最新文章
- 异步GridView(ASPxGridView) 特点介绍(2) - 筛选(Filter)、弹出编辑(Editing)
- 技巧:Silverlight应用程序中如何获取ASP.NET页面参数
- Servlet开发(二)
- 老王学jsp之dom解析xml
- wamp增加php,新版PHPWAMP自定义添加PHP版本方法步骤
- 程序员都长得丑?颜值底线是程序员?
- java 对象和类
- 2016年11月14日--SQL创建数据库、表-查、插、删、改
- [设计模式-结构型]适配器(Adapter)
- ArcGIS制图表达Representation实战篇4-自由式制图表达
- 百度文库免费下载方法,亲测可用!建议收藏!
- 棒棒的毛笔字PS教程
- 用python爬取校花网图片
- CS231n课程笔记翻译3:线性分类笔记
- 图片按比例缩放,鼠标滚轮调整大小
- 有钱人的心肠更硬吗?
- 计算机文化基础案例教程第三版答案,计算机文化基础案例教程教学课件作者第3版谭宁教学课件素材排骨做法.doc...
- java并发编程之再学习
- 【朝花夕拾】朝花夕拾-Robot Framework实战演练之开篇
- 爬取网易云音乐排行榜
热门文章
- EM算法推导pLSA
- Redis-基础知识
- Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean wit
- iPhone拍照/摄像软件开发实例
- 虚拟机基础网络配置及其常见问题(保姆级!超详细)
- 完美国际真数苹果_电脑投屏神器完美版!了解一下?
- 《携程技术2020年度合辑》,送给爱学习的你
- Oracle 列转行 (列行不确定) 解决方法
- 2月19号吃鸡服务器维护多久,绝地求生8月19日更新维护公告
- 盛迈坤电子商务:店铺内容营销的优势