最详细的python可视化测试案例
我们要画的子图有3个,折线图,散点图,柱状图
安装模块自备梯子
plot
里面的 ‘--’
是定义折线图的样式alpha
透明度(好看用的)for
这个是将数值
显示图表上方,使用了枚举(不懂得话参考我另外一篇博客《python 函数之enumerate(枚举)》)全部代码:
import matplotlib.pyplot as plt
import pymysql
#显示中文
plt.rcParams['font.sans-serif']=['simhei']
#桥接MySQL
con = pymysql.connect('localhost','root','000000','shop',charset='utf8')
#定义个光标(咸猪手)
cur = con.cursor()
#写个SQL
sql = "select shopName,sum(volume)as 总销量,sum(shopPrice) as 总金额,count(shopName) as 总数量 from fruist group by shopName order by 总数量 desc limit 10"
#SQL赋能的“咸猪手”去执行
cur.execute(sql)
data = (cur.fetchall())
name ,sum_vo,sum_pri,sum_na = [],[],[],[]
for i in data:
name.append(i[0])
sum_vo.append(int(i[1])) # SQL使用了sum就成Decimal类型了,转int就完事
sum_pri.append(int(i[2]))
sum_na.append(int(i[3]))
plt.figure(figsize=(15,8))
plt.subplot(1,3,1)
plt.title('总销量top 10')
plt.plot(name,sum_vo,'--',alpha=0.8,color='red')
for i,(_x,_y) in enumerate(zip(name,sum_vo)):
plt.text(_x,_y,sum_vo[i],fontsize=10,color='gray')
plt.subplot(1,3,2)
plt.title('总金额top 10')
plt.scatter(name,sum_pri,alpha=0.5)
for i,(_x,_y) in enumerate(zip(name,sum_pri)):
plt.text(_x,_y,sum_pri[i],fontsize=10,color='green')
plt.subplot(1,3,3)
plt.bar(name,sum_na,alpha=0.4)
plt.title('总数量top 10')
for i,(_x,_y) in enumerate(zip(name,sum_na)):
plt.text(_x,_y,sum_na[i],alpha=0.8,fontsize=10,color='orange')
plt.show()
plt.close()
fig.text(0.4,0.5,'这是一个水印',alpha=0.5,color='red')
,0.4,0.5 是维度#没有链接MySQL,数据 name,number1,number2
#同一商品,展示总金额和总销量
fig = plt.figure(figsize=(8,6))
fig.text(0.4,0.5,'这是一个水印',alpha=0.5,color='red')
name = ['蓝莓', '甜玉米', '地瓜', '甘蔗', '沙果', '樱桃', '荔枝', '猕猴桃', '袖子', '栗子']
# '*' 散点图,'*--'散点折线图,linewidth宽度
number1= [390031, 385145, 377133, 375945, 373261, 363121, 246989, 245725, 248635, 251676]
plt.title('各水果的白天销量和晚上销量对比图')
plt.bar(name,number1,color='gray',alpha=0.5,label='水果总销量')
for i,(_x,_y) in enumerate(zip(name,number1)):
plt.text(_x,_y,number1[i],color='gray')
number2 = [340031, 285145, 317133, 325945, 353261, 263121, 346989, 345725, 288635, 151676]
plt.plot(name,number2,'*--',linewidth=2,alpha=0.5,color='black',label='水果总金额')
for i,(_x,_y) in enumerate(zip(name,number2)):
plt.text(_x,_y,number2[i],color='black')
plt.xlabel('水果名字')
plt.ylabel('水果销量')
plt.legend()
plt.show()
plt.close()