echarts x轴像直尺一样设置刻度_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 pickledef 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_scorereturn 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 osmy_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 osmy_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 dataframe astype 字段类型转换 就可以了,每个人代码不一样,我就不写了。
echarts x轴像直尺一样设置刻度_Python matplotlib画图y轴数值不按大小排列问题相关推荐
- python绘制折线图数值小数点太长_Python matplotlib画图y轴数值不按大小排列问题
matplotlib 画图的时候经常会出现y轴数据不按大小排列的问题,很混乱,这主要是因为数据类型的错误,导致的!大家可以仔细阅读下以下两个案例,就应该有答案了: 案例一: 昨天偶然做一个爬取数据,做 ...
- echarts X轴像直尺一样设置刻度
在做老师的项目的时候,老师让我们实现X轴的直尺刻度显示,网上查了查相关代码,大家都没有明确介绍,因此我在这里记录一下,自己的学习. 先看实现效果: 对echarts的xAxis,yAxis这两个属性进 ...
- echarts x轴像直尺一样设置刻度_MATLAB作图实例:6:指定轴刻度值和标签
沿轴自定义刻度值和标签可以帮助突出显示数据的特定方面.本文示例显示了一些常见的自定义设置,例如,修改刻度值的位置,更改刻度标签的文本和格式以及旋转刻度标签. 更改刻度值位置和标签 将x创建为介于-10 ...
- echarts y轴只显示5个刻度_ECharts 解决双Y轴刻度不一致问题
若最大最小值固定,直接初始化设置option的yAxis的min和max属性值即可: 假设已知固定最大最小值为0和1. var option = { ... yAxis:[ { name: " ...
- echarts x轴像直尺一样设置刻度_matplotlib学习记录:刻度定位器和刻度格式器
图示: 知识点: 1.与轴和标签相关的API xlim(min,max) xlabel(xlabel=[],labelpad=int)设置x轴的标签及与底线的距离 xticks([刻度],[标签])和 ...
- echarts折线图取消折线上圆点,设置线条为虚线,设置第一个点在y轴上,拐点是曲线,线条下加填充区域
series--->symbol: "none" 取消折线上的圆点 设置线条为虚线 series: [{itemStyle:{normal:{lineStyle:{w ...
- python画图marker显示_python matplotlib 画图刻度、图例等字体、字体大小、刻度密度、线条样式设置...
设置输出的图片大小: figsize = 11,9 figure, ax = plt.subplots(figsize=figsize) 画简单的折线图,同时标注线的形状.名称.粗细: A,=plt. ...
- python画图图例字体_python matplotlib 画图刻度、图例等字体、字体大小、刻度密度、线条样式设置...
设置输出的图片大小: figsize = 11,9 figure, ax = plt.subplots(figsize=figsize) 画简单的折线图,同时标注线的形状.名称.粗细: A,=plt. ...
- python绘图时如何添加图例_【Python】matplotlib 双y轴绘制及合并图例
1.双y轴绘制 关键函数:twinx() 问题在于此时图例会有两个. # -*- coding: utf-8 -*- import numpy as np import matplotlib.pypl ...
最新文章
- 接口测试用例设计思路_用了Swagger2后,接口设计文档,测试用例都不用自己写了,爽...
- python打开excel表格-如何从python中用excel打开excel工作表?
- Base64编码及Android的应用
- python停止线程池_详解python中Threadpool线程池任务终止示例代码
- python 回调函数(Callback)
- “Info.plist” couldn’t be removed
- micrometer_具有InlfuxDB的Spring Boot和Micrometer第3部分:Servlet和JDBC
- 零基础学前端可行吗?要如何学习呢?
- NetSet:一款功能强大的自动化网络流量安全增强工具
- plsql如何破解的方法
- 【实用工具】一键在线抠图、一键在线更换图片背景、一键更换证件照片背景颜色的神奇AI网站 RemoveBg
- liu系统的混沌特性及其matlab仿真,Liu系统的混沌特性及其Matlab仿真.doc
- 为什么红黑树的时间复杂度为lgn——渐进边界的证明
- 中南大学计算机复试分数线,2019年中南大学考研复试分数线
- 超实用,一口气学会 Centos/Docker/Nginx/Node/Jenkins 等基础操作
- python 尖括号表示什么类型,Python的小括弧,中括号,大括号还有尖括号的区别...
- gstreamer debug tracer使用概览
- 云计算都有哪些特点?展望云计算的发展前景
- 人脸识别之三检测视频流(摄像头)中的人脸
- C++ 第八节数据结构 第七节 ——二叉搜索树 AVL树 红黑树(底层原理图+模拟实现)