pandas读取数据库,将结果使用matplotlib绘制成二维表格图片
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                pandas读取数据库,将结果使用matplotlib绘制成二维表格图片
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
                                廢話不多說,直接上代碼,執(zhí)行時(shí)有問題可留言。
依賴包
- python == 3.7.5 - numpy == 1.17.3 - pandas == 0.24.2 - matplotlib == 3.3.2 - pymysql == 0.9.2draw_table.py
from matplotlib import pyplot as plt import pymysql import pandas as pd from pandas import * from pylab import mpl mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei'] # 指定默認(rèn)字體:解決plot不能顯示中文問題 mpl.rcParams['axes.unicode_minus'] = False # 解決保存圖像是負(fù)號'-'顯示為方塊的問題def pd_data():mysql_cn = pymysql.connect(host='mysqlHost', port=3306, user='mysqlUser',passwd='mysqlPassword', db='mysqlDb')sql ='sql語句'stu = pd.read_sql(sql, con=mysql_cn)mysql_cn.close()num = stu.shape[0] # 獲取行號return stu, numdef plot_table(row, col, vals):"""函數(shù)功能: 繪制二維表格,草圖如下:-----------------|col1 |col2 |-----------------row1|value|value|-----------------row2|value|value|-----------------輸入:row:string,(N) #['row1', 'row2']col:string,(M) #['col1', 'col2']vals:np, (N,M)"""R, C = len(row), len(col)idx = Index(row)df = DataFrame(np.random.randn(R, C), index=idx, columns=col)# 根據(jù)行數(shù)列數(shù)設(shè)置表格大小figC, figR = 2.25 * C, Rfig = plt.figure(figsize=(figC, figR))# 設(shè)置fig并去掉邊框ax = fig.add_subplot(111, frameon=True, xticks=[], yticks=[])ax.spines['top'].set_visible(False)ax.spines['right'].set_visible(False)ax.spines['bottom'].set_visible(False)ax.spines['left'].set_visible(False)the_table = plt.table(cellText=vals, rowLabels=df.index, colLabels=df.columns, colWidths=[0.1] * vals.shape[1],rowLoc='center', loc='center', cellLoc='center')the_table.set_fontsize(30)# 伸縮表格大小常數(shù),可自行調(diào)節(jié)表格的寬高the_table.scale(figR / R * 1.2, figC / C * 2.0)# 設(shè)置每行隨機(jī)顏色for ro in row:from DingMessage.colorDict import cnamesimport randomcolor = cnames.get(random.sample(cnames.keys(), 1)[0])for co in range(len(col)):the_table._cells[(int(ro), co)].set_facecolor(color)plt.savefig("test.jpg")# plt.show()if __name__ == '__main__':# 讀庫獲取pd數(shù)據(jù)及總行數(shù)S,num = pd_data()# 設(shè)置表格titlecol = ["服務(wù)號","關(guān)注","分量","openid數(shù)","openID獲取準(zhǔn)確率","匹配廣告來源openID數(shù)","微信廣告銷售線索","回傳準(zhǔn)確率","全流程數(shù)據(jù)準(zhǔn)確性","廣告來源占比"]# 自動(dòng)匹配總行數(shù),行數(shù)不統(tǒng)一會(huì)報(bào)錯(cuò):ValueError: 'rowLabels' must be of length XXX(正確的行數(shù))row = [str(i) for i in range(1,int(num+1))]# 轉(zhuǎn)numpy數(shù)組vals = np.array(S)# 制表plot_table(row, col, vals)顏色對照表:colorDict.py
cnames = { 'aliceblue': '#DDDDDD', 'antiquewhite': '#AAAAAA', 'aqua': '#888888', 'aquamarine': '#FFB7DD', 'azure': '#FF88C2', 'beige': '#FF44AA', 'bisque': '#FFCCCC', 'black': '#FF8888', 'blanchedalmond': '#FF3333', 'blue': '#FFC8B4', 'blueviolet': '#FFA488', 'brown': '#FF7744', 'burlywood': '#FFDDAA', 'cadetblue': '#FFBB66', 'chartreuse': '#FFAA33', 'chocolate': '#FFEE99', 'coral': '#FFDD55', 'cornflowerblue': '#FFFFBB', 'cornsilk': '#FFFF77', 'crimson': '#EEFFBB', 'cyan': '#DDFF77', 'darkblue': '#CCFF33', 'darkcyan': '#CCFF99', 'darkgoldenrod': '#BBFF66', 'darkgray': '#99FF33', 'darkgreen': '#99FF99', 'darkkhaki': '#66FF66', 'darkmagenta': '#33FF33', 'darkolivegreen': '#BBFFEE', 'darkorange': '#77FFCC', 'darkorchid': '#33FFAA', 'darkred': '#AAFFEE', 'darksalmon': '#77FFEE', 'darkseagreen': '#33FFDD', 'darkslateblue': '#99FFFF', 'darkslategray': '#66FFFF', 'darkturquoise': '#33FFFF', 'darkviolet': '#CCEEFF', 'deeppink': '#77DDFF', 'deepskyblue': '#33CCFF', 'dimgray': '#5599FF', 'dodgerblue': '#99BBFF', 'firebrick': '#CCDDFF', 'floralwhite': '#CCCCFF', 'forestgreen': '#9999FF', 'fuchsia': '#CCBBFF', 'gainsboro': '#9F88FF', 'ghostwhite': '#D1BBFF', 'gold': '#B088FF', 'goldenrod': '#9955FF', 'gray': '#E8CCFF', 'green': '#D28EFF', 'greenyellow': '#B94FFF', 'honeydew': '#F0BBFF', 'hotpink': '#E38EFF', 'indianred': '#E93EFF', 'indigo': '#FFB3FF', 'ivory': '#FF77FF', 'khaki': '#FF3EFF'}當(dāng)前路徑下的test.jpg即為生成的圖片,如有問題歡迎留言。
結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的pandas读取数据库,将结果使用matplotlib绘制成二维表格图片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 【教程】CoreAVC+Haali安装及
- 下一篇: rfid射频前端的主要组成部分有_第4章
