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