首頁>技術>

import numpy as np

import matplotlib.pyplot as plt #匯入matplotlib庫中的pyplot並起別名為plt

%matplotlib inline #讓圖表直接在Jupyter Notebook中展示出來

plt.rcParams["font.sans-serif"]='SimHei' #解決中文亂碼的問題

plt.rcParams['axes.unicode_minus']=False #解決負號無法正常顯示的問題

%config InlineBackend.figure_format='svg' #將圖表設定成向量圖

"""

#例項一:繪製XXX公司1-9月份註冊使用者量的圖表--折線圖

plt.subplot(1,1,1)

x=np.array([1,2,3,4,5,6,7,8,9])

y=np.array([866,2335,5710,6482,6120,1605,3813,4428,4631])

plt.plot(x,y,color="k",linestyle="dashdot",linewidth=1,marker="o",markersize=5,label="註冊使用者數")

plt.title("繪製XXX公司1-9月份註冊使用者量",loc="center")

for a,b in zip(x,y):

plt.text(a,b,b,ha='center',va="bottom",fontsize=10) #新增資料標籤

plt.grid(True) #設定網格線

plt.xlabel("月份",labelpad=10) #labelpad為到數軸的距離

plt.ylabel("註冊人數",labelpad=10) #labelpad為到數軸的距離

plt.legend() #設定圖例

plt.savefig("d:\mypythontest\折線圖.jpg")

"""

#實列二:繪製全國各分割槽任務量的圖表--柱狀圖

plt.subplot(1,1,1)

x=np.array(['東區','北區','南區','西區'])

y=np.array([8566,6482,5335,7310])

plt.bar(x,y,width=0.5,align='center',label='任務量')

plt.title("全國各分割槽任務量",loc="center")

for a,b in zip(x,y):

plt.text(a,b,b,ha='center',va='bottom',fontsize=12)

plt.xlabel('分割槽')

plt.ylabel('任務量')

plt.legend()

plt.savefig("d:\mypythontest\柱狀圖.jpg")

#實列三:繪製全國各分割槽任務量的圖表--簇狀柱形圖

plt.subplot(1,1,1)

x=np.array([1,2,3,4])

y1=np.array([8566,5335,7310,6482])

y2=np.array([4283,2667,3655,3241])

plt.bar(x,y1,width=0.3,label="任務量") #柱狀圖的寬度為0.3

plt.bar(x+0.3,y2,width=0.3,label="完成量") #x+0.3相當於完成柱狀圖右移0.3

plt.title("全國各分割槽任務量和完成量",loc="center")

for a,b in zip(x,y1):

plt.text(a,b,b,ha="center",va="bottom",fontsize=12)

for a,b in zip(x+0.3,y2):

plt.text(a,b,b,ha="center",va="bottom",fontsize=12)

plt.xlabel('區域')

plt.ylabel('任務情況')

plt.xticks(x+0.15,["東區","南區","西區","北區"])

plt.legend

plt.savefig("d:\mypythontest\簇狀柱狀圖.jpg")

#實列四:繪製全國各分割槽任務量的圖表--堆積柱形圖

plt.subplot(1,1,1)

x=np.array(["東區","北區","南區","西區"])

y1=np.array([8566,6482,5335,7310])

y2=np.array([4283,3241,2667,3655])

plt.bar(x,y1,width=0.3,label="任務量")

plt.bar(x,y2,width=0.3,label="完成量")

plt.title("全國各分割槽任務量和完成量",loc="center")

for a,b in zip(x,y1):

plt.text(a,b,b,ha="center",va="bottom",fontsize=12)

for a,b in zip(x,y2):

plt.text(a,b,b,ha="center",va="top",fontsize=12)

plt.xlabel("區域")

plt.ylabel("任務情況")

plt.legend()

plt.savefig("d:\mypythontest\堆積柱狀圖.jpg")

#實列五:繪製全國各分割槽任務量的圖表--條形圖

plt.subplot(1,1,1)

x=np.array(["東區","北區","南區","西區"])

y=np.array([8566,6482,5335,7310])

plt.barh(x,height=0.5,width=y,align="right")

plt.title("全國各分割槽任務量",loc="center")

for a,b in zip(x,y):

plt.text(b,a,b,ha="left",va="center",fontsize=12) #水平居左,不重疊

plt.xlabel("任務量")

plt.ylabel("區域")

plt.legend()

plt.savefig("d:\mypythontest\條形圖.jpg")

#實列六:繪製平均氣溫與啤酒銷量關係的圖表--散點圖

plt.subplot(1,1,1)

x=[5.5,6.6,8.1,15.8,19.5,22.4,28.3,28.9]

y=[2.38,3.85,4.41,5.67,5.44,6.03,8.15,6.87]

plt.scatter(x,y,marker="o",s=100)

plt.title("1-8月平均氣溫與啤酒銷量關係圖",loc="center")

plt.xlabel("平均氣溫")

plt.ylabel("啤酒銷量")

plt.legend

plt.savefig("d:\mypythontest\散點圖.jpg")

#實列七:繪製平均氣溫與啤酒銷量關係的圖表--氣泡圖

plt.subplot(1,1,1)

x=np.array([5.5,6.6,8.1,15.8,19.5,22.4,28.3,28.9])

y=np.array([2.38,3.85,4.41,5.67,5.44,6.03,8.15,6.87])

colors=y*10 #根據y值的大小生成不同的顏色

area=y*100 #根據y值的大小生成大小不同的形狀

plt.scatter(x,y,c=colors,marker="o",s=area)

plt.title("1-8月平均氣溫與啤酒銷量關係圖",loc="center")

for a,b in zip(x,y):

plt.text(a,b,b,ha='center',va='center',fontsize=10,color='white')

plt.xlabel('平均氣溫')

plt.ylabel('啤酒銷量')

plt.legend()

plt.savefig("d:\mypythontest\氣泡圖.jpg")

#實列八:繪製平均氣溫與啤酒銷量關係的圖表--面積圖

plt.subplot(1,1,1)

x=np.array([1,2,3,4,5,6,7,8,9])

y1=np.array([866,2335,5710,6482,6120,1605,3813,4428,4631])

y2=np.array([433,1167,2855,3241,3060,802,1906,2214,2315])

labels=["註冊人數","啟用人數"]

plt.stackplot(x,y1,y2,labels=labels)

plt.title("XXX公司1-9月註冊與啟用人數",loc="center")

plt.xlabel('月份')

plt.ylabel('註冊人數與啟用人數')

plt.legend()

plt.savefig("d:\mypythontest\面積圖.jpg")

#例項九:繪製同一等級中不同類別的佔比關係--樹地圖

import squarify

size=np.array([3.4,0.693,0.585,0.570,0.562,0.531,0.530,0.524,0.501,0.478,0.468,0.436])

#指定每一塊的大小

xingzuo=np.array(["未知","魔蠍座","天秤座","雙魚座","天蠍座","金牛座","處女座","雙子座","射手座","獅子座","水瓶座","白羊座"])

#指定每一塊的文字標籤

rate=np.array(["34%","6.93%","5.85%","5.70%","5.62%","5.31%","5.30%","5.24%","5.01%","4.78%","4.68%","4.36%"])

#指定每一塊的數值標籤

colors=["steelblue","#9999ff","red","indianred","green","yellow","orange"]

#指定每一塊的顏色

plot=squarify.plot(sizes=size,label=xingzuo,color=colors,value=rate,edgecolor="white",linewidth=3)

plt.title("菊粉星座分佈",fontdict={'fontsize':12})

plt.axis('off') #去除座標軸

plt.tick_params(top="off",right="off") #去除上邊框和右邊框的刻度

plt.savefig("d:\mypythontest\樹地圖.jpg")

#例項十:綜合評價某一事物的優勢和不足--雷達圖

plt.subplot(1,1,1,polar=True) #引數polar=True表示建立一個極座標

dataLenth=5

angles=np.linspace(0,2*np.pi,dataLenth,endpoint=False)

#linspace引數:從0開始,2Π結束,共5等分

labels=['溝通能力','業務理解能力','邏輯思維能力','快速學習能力','工具使用能力']

data=[2,3.5,4,4.5,5]

data=np.concatenate((data,[data[0]])) #形成閉合 [2,3.5,4,4.5,5,2]

angles=np.concatenate((angles,[angles[0]]))

#形成閉合 [0,2/5Π,4/5Π,6/5Π,8/5Π,2Π,0]

plt.polar(angles,data,color='r',marker="o")

#繪製雷達圖:角度(0-2Π-0),5個數據,標記為圓點

plt.xticks(angles,labels) #在這5個角度上做5個標籤

plt.title(label="某資料分析師的綜合評級")

plt.savefig("d:\mypythontest\雷達圖.jpg")

#例項十一:反應一組資料的離散情況--箱型圖

plt.subplot(1,1,1)

y1=np.array([866,2335,5710,6482,6120,1605,3813,4428,4631])

y2=np.array([433,1167,2855,3241,3060,802,1906,2214,2315])

x=[y1,y2] #兩箱組合

labels=["註冊人數","啟用人數"]

plt.boxplot(x,labels=labels,vert=True,widths=[0.2,0.5]) #widths為分別寬度

plt.title("XXX公司1-9月份註冊人數與啟用人數",loc="center")

plt.grid(True)

plt.savefig("d:\mypythontest\箱型圖.jpg")

#例項十二:同一等級中不同類別之間的佔比情況--餅圖

plt.subplot(1,1,1)

x=np.array([8566,5335,7310,6482])

labels=["東區","北區","南區","西區"]

explode=[0.05,0,0,0] #四個塊離開圓心的距離,其中第一個塊為0.05,其餘為0,0,0

labeldistance=1.1 #標籤遠離中心的距離

plt.pie(x,labels=labels,autopct='%.0f%%',shadow=True,

explode=explode,radius=1.0,labeldistance=labeldistance)

#shadow為餅是否有陰影,radius為餅的半徑

plt.title("全國各區域任務量佔比",loc="center")

plt.savefig("d:\mypythontest\餅圖.jpg")

#例項十三:同一層級中不同類別之間的佔比情況--圓環圖

plt.subplot(1,1,1)

x1=np.array([8566,5335,7310,6482])

x2=np.array([4283,2667,3655,3241])

labels=["東區","北區","南區","西區"]

plt.pie(x1,labels=labels,radius=1.0,

wedgeprops=dict(width=0.3,edgecolor='w')) #wedgeprops內外邊界,生成餅圖

plt.pie(x2,radius=0.7,wedgeprops=dict(width=0.3,edgecolor='w'))

plt.annotate("完成量",xy=(0.35,0.35),xytext=(0.7,0.45),

arrowprops=dict(facecolor='black',arrowstyle='->'))

plt.annotate("任務量",xy=(0.75,0.20),xytext=(1.1,0.2),

arrowprops=dict(facecolor='black',arrowstyle='->'))

plt.title("全國各區域任務量與完成量佔比",loc="center")

plt.savefig("d:\mypythontest\圓環圖.jpg")

#例項十四:反映某一事物的響應度,可以快速發現需要重點關注的區域--熱力圖

import itertools

cm=np.array([[1,0.082,0.031,-0.0086],

[0.082,1,-0.09,0.062],

[0.031,-0.09,1,0.026],

[-0.0086,0.062,0.026,1]])

cmap=plt.cm.cool #設定配色方案

plt.imshow(cm,cmap=cmap)

plt.colorbar() #顯示右邊的顏色條的顏色條

classes=["負債率","信貸數量","年齡","家屬數量"]

tick_marks=np.arange(len(classes))

plt.xticks(tick_marks,classes) #設定x軸的刻度標籤

plt.yticks(tick_marks,classes) #設定y軸的刻度標籤

for i,j in itertools.product(range(cm.shape[0]),range(cm.shape[1])):

plt.text(j,i,cm[i,j],horizontalalignment="center")

plt.grid(False)

plt.savefig("d:\mypythontest\熱力圖.jpg")

#例項十五:繪製水平線和垂直線

plt.subplot(1,2,1)

plt.axhline(y=2,xmin=0.2,xmax=0.6) #繪製y=2(x∈[0.2,0.6])的直線

plt.subplot(1,2,2)

plt.axvline(x=2,ymin=0.2,ymax=0.6) #繪製x=2(y∈[0.2,0.6])的直線

#例項十六:組合圖表--折線圖+折線圖

plt.subplot(1,1,1)

x=np.array([1,2,3,4,5,6,7,8,9])

y1=np.array([866,2335,5710,6482,6120,1605,3813,4428,4631])

y2=np.array([433,1167,2855,3241,3060,802,1906,2214,2315])

plt.plot(x,y1,color="k",linestyle="solid",linewidth=1,marker="o",markersize=3,label="註冊人數")

plt.plot(x,y2,color="k",linestyle="dashdot",linewidth=1,marker="o",markersize=3,label="啟用人數")

plt.title("XXX公司1-9月份註冊與啟用人數",loc="center")

for a,b in zip(x,y1):

plt.text(a,b,b,ha="center",va='bottom',fontsize=11)

for a,b in zip(x,y2):

plt.text(a,b,b,ha="center",va='bottom',fontsize=11)

plt.xlabel('月份')

plt.ylabel('註冊量')

plt.xticks(np.arange(1,10,1),['1月份','2月份','3月份',

'4月份','5月份','7月份','8月份','9月份'])

plt.yticks(np.arange(1000,7000,1000),['1000人','2000人','3000人','4000人','5000人','6000人'])

plt.legend()

plt.savefig("d:\mypythontest\雙摺線組合圖.jpg")

#例項十七:組合圖表--折線圖+柱形圖

plt.subplot(1,1,1)

x=np.array([1,2,3,4,5,6,7,8,9])

y1=np.array([866,2335,5710,6482,6120,1605,3813,4428,4631])

y2=np.array([433,1167,2855,3241,3060,802,1906,2214,2315])

plt.plot(x,y1,color="k",linestyle="solid",linewidth=1,marker="o",markersize=3,label="註冊人數")

plt.bar(x,y2,color="k",label="啟用人數")

plt.title("XXX公司1-9月份註冊人數與啟用人數")

for a,b in zip(x,y1):

plt.text(a,b,b,ha="center",va='bottom',fontsize=11)

for a,b in zip(x,y2):

plt.text(a,b,b,ha="center",va='bottom',fontsize=11)

plt.xlabel('月份')

plt.ylabel('註冊量')

plt.xticks(np.arange(1,10,1),['1月份','2月份','3月份',

'4月份','5月份','7月份','8月份','9月份'])

plt.yticks(np.arange(1000,7000,1000),['1000人','2000人','3000人','4000人','5000人','6000人'])

plt.legend()

plt.savefig("d:\mypythontest\折線圖與柱形圖組合.jpg")

#例項十八:呼叫matplotlib式樣庫

呼叫方法:plt.style.use(式樣名)

式樣庫包括:'bmh'、'classic'、'dark_background'、'fast'、'classic'、'fivethirtyeight'

'ggplot'、'grayscale'、'seaborn-bright'等

7
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Java反序列化之與JDK版本無關的利用鏈挖掘