广告占位

python matplotlib绘制折线、柱状图(简单版)

木槿心   2017-10-20 阅读(434) 评论(4) 点赞(238)

摘要:入门级简单的折线、柱状图绘制,代码粘贴即可使用、方便修改。其中,柱状图可以填充内容,比如.和/等。

python matplotlib绘制折线、柱状图(简单版)

入门级简单的折线、柱状图绘制,代码粘贴即可使用、方便修改。其中,柱状图可以填充内容,比如.和/等。

简单折线

绘制一个算法加速比的折线图,横坐标是实验次数,纵坐标是加速比。

程序

import numpy as np  
import matplotlib.pyplot as plt 

y=[1.310,1.34,1.314,1.340,1.340,1.347,1.376,1.369,1.372] 
x=range(1,10) 
x_labels = range(1,10)

plt.plot(x,y,linewidth=3,color='black',marker='x',markersize=12)
font = {'family' : 'serif','weight': 'normal',  'size': 16}  

plt.xlabel('Experiments Number',fontdict=font) 
plt.ylabel('Accelerate Rate',fontdict=font) 
plt.xlim(0,10)
plt.ylim(0,2) 
plt.xticks(x,x_labels) 
plt.show()

效果图

程序说明

plot(x,y)                  # 绘制x、y
plot(y)                    # 绘制y,用y数组的下标作为x 0...N-1
range(1,10)                # 代表从1到10不包括10 [1,2,...,9]
plt.xlabel('...')          # x轴标签 
plt.xlabel('...',fontdict) # 设置标签以及字体
plt.xlim()                 # x轴范围
plt.xticks(x,x_labels)     #x轴刻度以及显示的文本

多个折线

绘制多个折线,横坐标是聚类个数,纵坐标是算法耗时。

程序

import numpy as np  
import matplotlib.pyplot as plt 

y1=[0.6,1.5,3.1,3.3,5.7,6.2,7.4,8.3,9.6,11.64,12.18,12.64] 
y2=[0.833,2.073,3.9,4.77,6.322,7.368,8.44,9.82,11.16,12.30,14.51,16.325] 
y3=[0.495,2.85,4.47,6.23,7.80,9.61,10.96,12.72,14.646,16.70,18.33,19.52]

x1= range(2,47,4)
x_label = range(2,47,4)
plt.plot(x1,y1,label='D1',linewidth=1,color='black',marker='x', markerfacecolor='black',markersize=5)
plt.plot(x1,y2,label='D2',linewidth=1,color='black',marker='o', markerfacecolor='black',markersize=5)
plt.plot(x1,y3,label='D3',linewidth=1,color='black',marker='v', markerfacecolor='black',markersize=5)

font = {'family' : 'serif','weight': 'normal',  'size': 16}  
plt.xlabel('Clusters Number',fontdict=font) 
plt.ylabel('Time Consuming/s',fontdict=font) 
plt.xlim(-2,50)
plt.ylim(0,25) 
plt.xticks(x1,x_label)

plt.legend(loc='upper left')  
plt.grid(True)
plt.show()

效果图

程序说明

plt.legend()       #显示图例 loc = 'upper left'表示在左上方 默认在右上角
plt.grid(True)     #显示网格

柱状图

一共三组实验,每组实验四组数据,即四个柱体。

程序

import numpy as np  
import matplotlib.pyplot as plt     
n_groups = 3   
means_10_1 = (3.94,22.348,38.746)  
means_10_2 = (3.436,18.022,30.373)  
means_50_1 = (17.635,104.461,140.275)    
means_50_2 = (14.212,84.27,110.547)    

index = np.arange(n_groups) 
print index 
bar_width = 0.1  

rects1 = plt.bar(index, means_10_1, bar_width,alpha=0.2, color='k',label='M k=10')  
rects2 = plt.bar(index + bar_width, means_10_2, bar_width,color='w',label='P k=10',hatch='\\')  
rects3 = plt.bar(index + 2*bar_width, means_50_1, bar_width,alpha=0.7,color='k',label='M k=50')  
rects4 = plt.bar(index + 3*bar_width, means_50_2, bar_width,color='w',label='P k=50',hatch='.')

font = {'family' : 'serif','weight': 'normal',  'size': 16}   
plt.xlabel('Dimensions',fontdict=font)  
plt.ylabel('Time Consuming/s',fontdict=font)   
plt.xticks(index + 2*bar_width, ('10', '50', '100'))  
plt.ylim(0,160)  
plt.legend(loc='upper left')  

plt.tight_layout()  
plt.show()

效果图

程序说明

plot.bar(left,height,width) # left每一个柱形左侧x的坐标 画柱形的关键是计算坐标位置
plot.bar(...,hatch)         # 柱形填充内容
arrage(3)                   # 生成list [0,1,2]
plt.tight_layout()          # 紧凑显示图片,图片居中显示
喜欢 (238) or 分享 (0)

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击下面的

  python 绘图
广告占位