Python - matplotlib画折线图

在用matplotlib画折线图时,有一个特别重要的点,就是X一定得是从小到大排列。否则画出来的图就是乱的。


1. 正确画法

import matplotlib.pyplot as plt

x1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
y1 = [30,31,31,32,33,35,35,40,47,62,99,186,480]
  
x2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]  
y2 = [32,32,32,33,34,34,34,34,38,43,54,69,116,271]  
  
group_labels = ['64k', '128k','256k','512k','1024k','2048k','4096k','8M','16M','32M','64M','128M','256M','512M']  
plt.title('broadcast(b) vs join(r)')  
plt.xlabel('data size')  
plt.ylabel('time(s)')  
  
plt.plot(x1, y1,'r', label='broadcast')  
plt.plot(x2, y2,'b',label='join')  
plt.xticks(x1, group_labels, rotation=0)  
  
plt.legend()  
plt.grid()  
plt.show() 



2. 错误画法

import matplotlib.pyplot as plt
import random

x1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
random.shuffle(x1)
y1 = [30,31,31,32,33,35,35,40,47,62,99,186,480]
  
x2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]  
y2 = [32,32,32,33,34,34,34,34,38,43,54,69,116,271]  
  
group_labels = ['64k', '128k','256k','512k','1024k','2048k','4096k','8M','16M','32M','64M','128M','256M','512M']  
plt.title('broadcast(b) vs join(r)')  
plt.xlabel('data size')  
plt.ylabel('time(s)')  
  
plt.plot(x1, y1,'r', label='broadcast')  
plt.plot(x2, y2,'b',label='join')  
plt.xticks(x1, group_labels, rotation=0)  
  
plt.legend()  
plt.grid()  
plt.show() 

3. 对错误画法进行纠正
import matplotlib.pyplot as plt  
import random  
  
x1 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]  )
random.shuffle(x1)  
y1 = np.array([30,31,31,32,33,35,35,40,47,62,99,186,480]  )

# 需要对x1, y1同时排序
sortIndex = np.argsort(x1)
y1 = y1[sortIndex]
x1 = np.sort(x1)
    
x2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]    
y2 = [32,32,32,33,34,34,34,34,38,43,54,69,116,271]    
    
group_labels = ['64k', '128k','256k','512k','1024k','2048k','4096k','8M','16M','32M','64M','128M','256M','512M']    
plt.title('broadcast(b) vs join(r)')    
plt.xlabel('data size')    
plt.ylabel('time(s)')    
    
plt.plot(x1, y1,'r', label='broadcast')    
plt.plot(x2, y2,'b',label='join')    
plt.xticks(x1, group_labels, rotation=0)    
    
plt.legend()    
plt.grid()    
plt.show()




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值