python学习笔记-绘制散点图2


前言

本文档旨在记录通过python的matplotlib包绘制散点图的实现细节

需求分析

1.将excel的数据导入python

2.通过python绘制散点图

  1)不同类别的点标注不同的颜色

  2)绘制图例

具体实现

需求1:将excel的数据导入python

在之前的博文里已经实现了,具体请参见:https://www.cnblogs.com/serenelian/p/12801733.html

然而这一次的excel文件中数据长度不一致,python会读取长度为最长列长度(MaxRow)的所有数据,如果某些列的长度小于最长列长度(MaxRow),python会将其处理为空值;空值为str,这样运行会报错说str和float类型不一致,如果直接处理成0会有问题;

因此,我们需要去除空值,通过filter(None,(你的List)来去除空值和None;

需求2:绘制散点图

散点图在之前的博文里也实现了,具体参见同上链接;

今天的散点图要给不同的类别添加上不同的颜色,实际上实现很简单,直接多些几行plt.scatter即可。

需求3:绘制图例

通过plt.legend()实现,要想写明图例当中的标注,需要在plt.scatter(label='')写明label的参数即可。

可以通过设置loc的参数来改变图例的位置,具体如下:

具体在图中的位置见下图:

 

 参考代码

#-*- coding:utf-8 -*-
import matplotlib.pyplot as plt
import xlrd
import numpy as np
from scipy.optimize import curve_fit
import math

rbook = xlrd.open_workbook('data.xlsx')
table = rbook.sheet_by_index(0)

nrows = table.nrows
ncols = table.ncols
a0_values = table.col_values(0)
a1_values = table.col_values(1)
a2_values = table.col_values(2)
a3_values = table.col_values(3)
a4_values = table.col_values(4)
a5_values = table.col_values(5)

a0 = list(filter(None,a0_values))
a1 = list(filter(None,a1_values))
a2 = list(filter(None,a2_values))
a3 = list(filter(None,a3_values))
a4 = list(filter(None,a4_values))
a5 = list(filter(None,a5_values))

plt.title("散点图")
plt.xlabel("x轴")
plt.ylabel("y轴")

plt.xlim([0,1])  # x轴边界
plt.ylim([100,300])  # y轴边界
#消除中文乱码
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

color1 = '#FF0000'
color2 = '#1E90FF'
color3 = '#228B22'
plt.scatter(a0,a1,s=30,c=color1,label = 'x1')
plt.scatter(a2,a3,s=30,c=color2,label = 'x2')
plt.scatter(a4,a5,s=30,c=color3,label = 'x3')


plt.subplots_adjust(left=None, bottom=None, right=None, top=None,wspace=0.3, hspace=0.3)
plt.savefig('test.png')
plt.legend(loc='upper left')
plt.show()
View Code

实现结果

 

可优化部分

现在的数据是将不同的类别放在不同的列上,如果有很多很多类都在同一列里,通过python直接处理,要写一个循环,将不同类的数据放到各类的list当中即可。


参考资料

1.去除list当中的空字符:https://www.bbsmax.com/A/n2d9a7vYdD/

2.python图例位置:https://blog.csdn.net/Wannna/article/details/102751689

3.scatter参数:https://blog.csdn.net/m0_37393514/article/details/81298503

4.scatter参数:https://www.jianshu.com/p/1e84915c7c30

5.scatter颜色大全:https://blog.csdn.net/w576233728/article/details/86538060

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM