matplotlib繪製常見統計圖
阿新 • • 發佈:2020-12-04
1.折線統計圖
# 繪製你和你同桌11歲到30歲之間所交的男女朋友數量折線圖,並進行比較,得出走勢分析 from matplotlib import pyplot as plt from matplotlib import font_manager myfont = font_manager.FontProperties(fname="C:\\WINDOWS\\Fonts\\simsun.ttc", size=14) # 資料準備 x = range(20) y1 = [1, 0, 1, 1, 2, 4, 3, 2, 3, 4, 4, 5, 6, 5, 4, 3, 3, 1, 1, 1] y2= [1, 0, 3, 1, 2, 2, 3, 3, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1] plt.figure(figsize=(20, 8), dpi=90) # 繪圖 # 表明每條線代表什麼,加上Label,color表示線條顏色,linestyle表示線條風格,可以是--也可以是-.marker表示對點的形狀標記,ms設定其大小 plt.plot(x, y1, color="blue", label="男生", linestyle="-", marker="o", ms=10) plt.plot(x, y2, color="pink", label="女生", linestyle=":", marker="x", ms=10) # 座標軸設定 _x_label = ["{}歲".format(i) for i in range(11, 31)] plt.xticks(x, _x_label, rotation=45, fontproperties=myfont) plt.ylabel("數量/個", fontproperties=myfont) plt.xlabel("年齡/歲", fontproperties=myfont) # 圖例設定,字型設定要用prop plt.legend(prop=myfont, loc="upper left") plt.show()
2.直方圖
# 橫著的直方圖 from matplotlib import pyplot as plt import random from matplotlib import font_manager myfont = font_manager.FontProperties(fname="C:\\WINDOWS\\Fonts\\simsun.ttc", size=14) a = ["跑男", "街舞", "姐姐乘風破浪", "嚮往的生活", "偶像練習生", "青春有你"] b = [93.1, 90.3, 85.4, 80.1, 99.1, 96.5] plt.figure(figsize=(20, 8), dpi=80) # 直方圖用 bar plt.bar(range(len(a)), b, width=0.5, color="orange") plt.xticks(range(len(a)), a, rotation=45, fontproperties=myfont) plt.xlabel("綜藝節目", fontproperties=myfont) plt.ylabel("收視率 單位(%)", fontproperties=myfont) plt.title("六大綜藝收視率", fontproperties=myfont) # 新增網格 plt.grid(alpha=0.4) # 展示 plt.show()
3.條形圖
# 14、15、16號這三天每一天這四部綜藝的收視率對比 繪製多個條形圖 from matplotlib import font_manager from matplotlib import pyplot as plt myfont= font_manager.FontProperties(fname=r"C:\\WINDOWS\\Fonts\\simsun.ttc", size=14) a=["跑男","街舞","姐姐乘風破浪","青你"] b_14=[93.1,90.3,85.4,87] b_15=[93.1,90.3,85.4,67] b_16=[93.1,90.3,85.4,76] #水平軸的範圍 x_1=range(len(a)) x_2=range((len(a)+3),(len(a)+len(a)+3)) x_3=range((len(a)+len(a)+6),(len(a)+len(a)+6+len(a))) plt.figure(figsize=(20,8),dpi=80) plt.bar(x_1,b_14,width=0.9 ,label="14號",color="cyan") plt.bar(x_2,b_15,width=0.9 ,label="15號",color="orange") plt.bar(x_3,b_16,width=0.9 ,label="16號",color="red") plt.legend(prop=myfont) #座標設定 _x=list(x_1)+list(x_2)+list(x_3) for i in range(len(a)-1): a+=a; print(a) plt.xticks(_x,a,rotation=45,fontproperties=myfont) plt.xlabel("綜藝節目", fontproperties=myfont) plt.ylabel("收視率 單位(%)", fontproperties=myfont) plt.title("六大綜藝收視率", fontproperties=myfont) #新增網格 plt.grid(alpha =0.4) #展示 plt.show()
# 14、15、16號這三天每一天這四部綜藝的收視率對比 繪製多個條形圖 from matplotlib import font_manager from matplotlib import pyplot as plt myfont= font_manager.FontProperties(fname=r"C:\\WINDOWS\\Fonts\\simsun.ttc", size=14) a=["跑男","街舞","姐姐乘風破浪","青你"] b_14=[93.1,90.3,85.4,87] b_15=[93.1,90.3,85.4,67] b_16=[93.1,90.3,85.4,76] #水平軸的範圍 barwidth = 0.2 x_1= range(len(a)) x_2= [i+barwidth for i in x_1] x_3= [i+barwidth for i in x_2] plt.figure(figsize=(20,8),dpi=80) plt.bar(x_1,b_14,width=barwidth ,label="14號",color="cyan") plt.bar(x_2,b_15,width=barwidth ,label="15號",color="orange") plt.bar(x_3,b_16,width=barwidth ,label="16號",color="red") plt.legend(prop=myfont) #座標設定 _x=list(x_1)+list(x_2)+list(x_3) plt.xticks(x_2,a,rotation=45,fontproperties=myfont) plt.xlabel("綜藝節目", fontproperties=myfont) plt.ylabel("收視率 單位(%)", fontproperties=myfont) plt.title("六大綜藝收視率", fontproperties=myfont) #新增網格 plt.grid(alpha =0.4) #展示 plt.show()
# 繪製三月份和十月份的溫度變化情況 from matplotlib import pyplot as plt from matplotlib import font_manager import random myfont = font_manager.FontProperties(fname="C:\\WINDOWS\\Fonts\\simsun.ttc", size=14) x_3=range(1,32) x_10=range(51,82) #隨機生成31個數據代表溫度 y_3=[random.randint(20,30) for i in range(31)] y_10=[random.randint(10,20) for i in range(31)] plt.figure(figsize=(20,8),dpi=100) plt.scatter(x_3,y_3,label="三月份") plt.scatter(x_10,y_10,label="十月份") _x_label=["3月{}日".format(i) for i in range(1,32)] _x_label+=["10月{}日".format(i-50) for i in range(51,82)] #TypeError: unsupported operand type(s) for +: 'range' and 'range' x=list(x_3)+list(x_10) plt.xticks(x[::2],_x_label[::2],rotation=60,fontproperties=myfont) plt.xlabel("時間",fontproperties=myfont) plt.xlabel("溫度",fontproperties=myfont) plt.grid(alpha=0.4) plt.show()
4.散點圖