4-3 條形圖

In [1]:
import numpy as np
import matplotlib
matplotlib.use('nbagg')
import matplotlib.pyplot as plt
 

seed能夠保證每次生成的隨機數值是同樣的,參數是肯定隨機數的生成起始位置,注意:不是seed(0)第一個隨機數就是0而是seed裏設置好的第0個參數。詳情看:http://www.javashuo.com/article/p-flbjvggs-s.htmljavascript

 

1.柱狀圖的子圖 ,畫圖方向,畫線方向css

In [2]:
np.random.seed(0)
x=np.arange(5)
y=np.random.randint(-5,5,5)
print(y)
fig,axes=plt.subplots(ncols=2)#生成2列的子圖
v_bars=axes[0].bar(x,y,color='red')#豎着畫圖bar
h_bars=axes[1].barh(x,y,color='red')#橫着畫圖barh

axes[0].axhline(0,color='grey',linewidth=2)#在圖分界線那加一橫條線axhline
axes[1].axvline(0,color='grey',linewidth=2)#在圖分界線那加一豎條線axvline
plt.show()#沒有寫%matplotlib.inline魔法指令就必須寫plt.show()
 
[ 0 -5 -2 -2  2]
 
 
 
In [3]:
fig,ax=plt.subplots()
v_bars=ax.bar(x,y,color='lightblue')

#對y值=>height的屬性修改
for bar,height in zip(v_bars,y):
    if height<0:
        bar.set(edgecolor='darkred',color='green',linewidth=3)
plt.show()
    
 
 
 
 

2.填充圖html

2-1填充一條曲線html5

In [4]:
x=np.random.randn(100).cumsum()
y=np.linspace(0,10,100)

fig,ax=plt.subplots()
ax.fill_between(x,y,color='lightblue')#填充圖
plt.show()
 
 
 
 

2-2 填充2條線間的面積java

In [5]:
x=np.linspace(0,10,200)
y1=2*x+1
y2=3*x+1.2
y_mean=0.5*np.cos(2*x)+2.5*x+1.1

fig,ax=plt.subplots()
ax.fill_between(x,y1,y2,color='lightblue')#填充圖y1和y2

ax.plot(x,y_mean,color='black')
plt.show()
 
 
 
 

3.條形圖細節設置python

  • bar(left, height, width, color, align, yerr)函數:繪製柱形圖。left爲x軸的位置序列,通常採用arange函數產生一個序列;height爲y軸的數值序列,也就是柱形圖的高度,通常就是咱們須要展現的數據;width爲柱形圖的寬度,通常這是爲1便可;color爲柱形圖填充的顏色;align設置plt.xticks()函數中的標籤的位置;yerr讓柱形圖的頂端空出一部分。

下面圖的那條黑線就是方差部分jquery

 

3-1 顯示方差的柱狀圖linux

In [6]:
mean_values=[1,2,3]
variance=[0.2,0.4,0.5]#variance是方差
bar_label=['bar1','bar2','bar3']

x_pos=list(range(len(bar_label)))
plt.bar(x_pos,mean_values,yerr=variance,alpha=0.4)#繪圖x_pos爲x軸,mean_values爲y軸,alpha爲透明度bar函數指定了條形圖的x軸、y軸值,設置x軸刻度標籤,條形圖的色,同時設置透明度alpha
max_y=max(zip(mean_values,variance))#將對象中對應的元素打包成一個個元組,而後返回由這些元組組成的列表
plt.ylim([0,(max_y[0]+max_y[1]*1.2)])#設置Y軸刻度範圍
plt.ylabel('variance y')
plt.xticks(x_pos,bar_label)#添加x軸刻度標籤
plt.show()
 
 
 
 
  • figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)android

    num:圖像編號或名稱,數字爲編號 ,字符串爲名稱css3

    figsize:指定figure的寬和高,單位爲英寸;

    dpi:參數指定繪圖對象的分辨率,即每英寸多少個像素,缺省值爲80,1英寸等於2.5cm,A4紙是 21*30cm的紙張

    facecolor:背景顏色

    edgecolor:邊框顏色

    frameon:是否顯示邊框

 

3-2 背靠背的柱狀圖

In [7]:
x1=np.array([1,2,3])
x2=np.array([2,2,3])

bar_label=['bar1','bar2','bar3']
fig=plt.figure(figsize=(8,6))
y_pos=np.arange(len(x1))
y_pos=[x for x in y_pos]

plt.barh(y_pos,x1,color='g',alpha=0.5)
plt.barh(y_pos,-x2,color='b',alpha=0.5)

plt.xlim(-max(x2)-1,max(x1)+1)#設置x範圍
plt.ylim(-1,len(x1)+1)#設置y範圍
plt.show()
 
 
 
In [8]:
green_data=[1,2,3]
blue_data=[3,2,1]
red_data=[2,3,3]
labels=['group 1','group 2','group 3']

pos=list(range(len(green_data)))
width=0.2
fig,ax=plt.subplots(figsize=(8,6))

plt.bar(pos,green_data,width,alpha=0.5,color='g',label=labels[0])
plt.bar([p+width for p in pos],blue_data,width,alpha=0.5,color='c',label=labels[0])
plt.bar([p+width*2 for p in pos],red_data,width,alpha=0.5,color='r',label=labels[0])

plt.show()
 
 
 
 

4.柱狀圖外觀設置

 

4-1 在狀圖上顯示數據指標和分界線

  • matplotlib.pyplot.hlines(y, xmin, xmax)表示橫線,參數(y的值,橫線開始橫座標,橫線結束橫座標)
  • matplotlib.pyplot.vlines(x, ymin, ymax)表示豎線,參數(x的值,豎線開始縱座標,豎線結束縱座標)
  • 除以上基本屬性外還能夠添加其餘屬性設置如:linestyles等
In [9]:
data=range(200,225,5)
bar_labels=['a','b','c','d','e']
fig=plt.figure(figsize=(10,8))#
y_pos=np.arange(len(data))
plt.yticks(y_pos,bar_labels,fontsize=16)#添加y軸刻度標籤
bars=plt.barh(y_pos,data,alpha=0.5,color='g')
plt.vlines(min(data),-1,len(data)+0.5,linestyles='dashed')#畫一條豎線
#在每一個柱狀後面顯示當前數據是最小數據的多少佔比
for b,d in zip(bars,data):
    plt.text(b.get_width()+b.get_width()*0.05,b.get_y()+b.get_height()/2,'{0:.2%}'.format(d/min(data)))

plt.show()
 
 
 
 

4-2 畫出漸變顏色的柱狀圖

  • matplotlib庫中內置的色彩映射函數。matplotlib.cm.色彩即對[數據集]應用[色彩]
  • cm.ScalarMappable這是一個mixin類,用於支持RGBA映射的標量數據。ScalarMappable在從給定的顏色映射返回RGBA顏色以前使用數據標準化。
In [14]:
mean_values=range(10,18)
x_pos=range(len(mean_values))

import matplotlib.colors as col
import matplotlib.cm as cm

# 建立 colormap
cmap1=cm.ScalarMappable(col.Normalize(min(mean_values),max(mean_values),cm.hot))#定義顏色區間,和顏色方式
cmap2=cm.ScalarMappable(col.Normalize(0,20,cm.hot))

#畫子圖
plt.subplot(121)
plt.bar(x_pos,mean_values,color=cmap1.to_rgba(mean_values))
plt.subplot(122)
plt.bar(x_pos,mean_values,color=cmap2.to_rgba(mean_values))
plt.show()
 
 
 
In [19]:
patterns=('-','+','x','\\','*','o','0','.')

fig=plt.gca()

mean_value=range(1,len(patterns)+1)
x_pos=list(range(len(mean_value)))

bars=plt.bar(x_pos,mean_value,color='green')

for bar,patterns in zip(bars,patterns):
    bar.set_hatch(patterns)
plt.show()
 
 
 
相關文章
相關標籤/搜索