强大好用的pythob绘图,对于测试人员来说也是常用的库,更好的输出测试结果,呈现出来的测试报告不仅高大上,而且数据清晰一目了然,加分不少,直接上代码:
import pandas as pd
import numpy as np
import time
import matplotlib.pyplot as plt
from pyecharts import Map
import pylab
from PIL import Image
from pyecharts import WordCloud
from pyecharts.engine import create_default_environment
import random
def num():plt.rcParams['savefig.dpi'] = 100 plt.rcParams['figure.dpi'] = 100 dic1={"name":["charlie","wang","jason","born"],"age":[17,24,23,36]}dic2={"name":["charlie","wang","jason","born"],"age":[20,4,9,13]}df3 = pd.DataFrame(dic1)df1=pd.DataFrame([["charlie","wang","jason","born"],[1,2,3,4],["beijing","tokyo","france","london"],["facebook","twitter","wechat","weiboc"]],index=("name","class","city","tool"),columns=("A","B","C","D"))print (df3)print (df1)print (df3.dtypes)print (df3.index)print (df3.values)print (df3.columns)print (df3['name'].values)print (df3.T)reportdata={'date': '20191128', 'online': [[1, 6, 3, 10], [2, 2, 1, 5], [2, 1, 3, 6], [1, 0, 1, 2], [1, 0, 1, 2], [0, 2, 3, 5], [0, 6, 3, 9], [3, 12, 2, 17], [5, 16, 3, 24], [3, 16, 6, 25], [5, 16, 6, 27], [5, 15, 5, 25], [5, 5, 2, 12], [2, 5, 2, 9], [0, 4, 3, 7], [0, 2, 2, 4], [1, 5, 1, 7], [3, 8, 5, 16], [3, 7, 8, 18], [2, 4, 6, 12], [2, 6, 3, 11], [3, 8, 3, 14], [4, 10, 3, 17], [4, 11, 5, 20]]}data = []group1=[]group2=[]group3=[]info = reportdata["online"]for i in info:data.append(i[3])group1.append(i[0])group2.append(i[1])group3.append(i[2])fig = plt.figure()ax1 = fig.add_subplot(2,2,1) ax2 = fig.add_subplot(2,2,2) ax3 = fig.add_subplot(2,2,3)ax4 = fig.add_subplot(2,2,4)plt.subplots_adjust(hspace=0.25,wspace=0.15,left=0.05,bottom=0.03, right=0.97,top=0.97)ax1.plot(dic1["name"], dic1["age"],c="red",label="2018",linewidth = 0.5)ax1.plot(dic2["name"], dic2["age"],"--",c="blue",label="2019")ax1.legend(loc="best")bar_width = 0.3x= np.arange(24) z1=ax2.bar(x,group1,bar_width,tick_label=x,label='charlie',fc="c")z2=ax2.bar(x+bar_width, group2, bar_width, align="center",label="semona",fc="red")z3=ax2.bar(x+bar_width+bar_width, group3, bar_width, align="center",label="jessy",fc="green")for a, b,c,d in zip(x, group1,group2,group3):ax2.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', color="r",fontsize=10)ax2.text(a+bar_width, c + 0.05, '%.0f' % c, ha='center', va='bottom', fontsize=10)ax2.text(a+bar_width*2, d + 0.05, '%.0f' % d, ha='center', va='bottom', fontsize=10)ax2.legend(loc="upper left")ax3.pie(x=dic1["age"],labels=dic1["name"],explode = [0,0.05,0,0],autopct="%0.2f%%",frame=True)ax3.legend(loc="upper left")ax3.axis('equal')ax4.plot(range(24),data,"-",c="red",label="Total",marker='.',linewidth = 2)ax4.plot(range(24),group1,"--",c="blue",label="group_1",marker='.')ax4.plot(range(24),group2,"-.",c="green",label="group_2",marker='.')ax4.plot(range(24),group3,":",c="c",label="group_3",marker='.')plt.xticks(range(0,24, 1))ax4.legend(loc="best")plt.savefig('scores_par.png')plt.show()
def map():value = [95.1, 23.2, 43.3, 66.4, 88.5]attr = ["China", "Canada", "Brazil", "Russia", "United States"]map0 = Map("世界地图示例", width=1200, height=600)map0.add("世界地图", attr, value, maptype="world", is_visualmap=True, visual_text_color='#000')map0.render(path="世界地图.html")province_distribution = {'河南': 45.23, '北京': 37.56, '河北': 21, '辽宁': 12, '江西': 6, '上海': 20, '安徽': 10, '江苏': 16, '湖南': 9,'浙江': 13, '海南': 2, '广东': 22, '湖北': 8, '黑龙江': 11, '澳门': 1, '陕西': 11, '四川': 7, '内蒙古': 3, '重庆': 3,'云南': 6, '贵州': 2, '吉林': 3, '山西': 12, '山东': 11, '福建': 4, '青海': 1, '天津': 1,'其他': 1}provice = list(province_distribution.keys())values = list(province_distribution.values())map1 = Map("中国地图", '中国地图', width=1200, height=600)map1.add("", provice, values, visual_range=[0, 50], maptype='china', is_visualmap=True,visual_text_color='#000')map1.render(path="中国地图.html")fig = plt.figure()ax1 = fig.add_subplot(2,1,1)ax2 = fig.add_subplot(2,1,2)ax1=Image.open("./世界地图示例.png")ax2=Image.open("./中国地图.png")plt.imshow(ax1)plt.imshow(ax2)plt.axis('off')pylab.show()
def cloud():
name = ["蓝超巨星","激发态","维多利亚多管水母","傅里叶","飞鸟时期","Vincent van Gogh","木卫一","大天使米迦勒","猎户座","干细胞","减数分裂","uranus","芥川龙之介","金刚怒目","菩萨低眉","卡拉瓦乔","十七贴","矮大紧","苏麻离青","格里芬"]value = []for i in name:value.append(random.randint(300,1100))wordcloud =WordCloud(width=820, height=1780 )wordcloud.add("", name, value, word_size_range=[10, 40])wordcloud.shape='triangleforward'wordcloud.render(path="cloud.html")
if __name__ == "__main__":num()
最终呈现:
常规的一些数据,柱图折线图基本可以满足,
词云图,右边刷新按钮点击可以变换排列的方式,
呈现热力图等等来说也非常便捷