在用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()