折线图
-
第一个程序
from matplotlib import pyplot as plt x=range(2,26,2) y=[15,13,14.5,17,20,25,26,26,24,22,18,15] plt.plot(x,y) plt.show()
-
调整x,y轴的坐标刻度和图片的保存
from matplotlib import pyplot as plt x=range(2,26,2) y=[15,13,14.5,17,20,25,26,26,24,22,18,15] #设置图片大小 #figsize=(20,8)调整图片的宽=20、高=8,dpi调整图片的清晰度 plt.figure(figsize=(20,8),dpi=80) #绘图 plt.plot(x,y) #绘制x,y轴的刻度 #plt.xticks(range(2,25))绘把x轴绘制成2~24步长为1 #_xtick_labels=[i/2 for i in range(4,49)] 使用推导式计算x轴 plt.xticks(x) plt.yticks(range(min(y),max(y)+1)) #保存 plt.savefig('./t1.png') #展示图形 plt.show() ```
-
练习
from matplotlib import pyplot as plt x=range(11,31) y1=[1,0,1,2,4,3,2,2,2,3,4,5,6,5,4,3,3,1,1,1] y2=[2,3,4,5,1,2,3,4,1,1,2,3,4,0,1,2,8,5,1,1] plt.figure(figsize=(10,10),dpi=80) plt.xticks(x) plt.yticks(range(min(y1),max(y1)+1)) plt.plot(x,y1,label="XiaoMing",color='orange',linestyle='--') plt.plot(x,y2,label="XiaoBai",linestyle=":") plt.title("The Number Of Girlfriends Every Year") plt.xlabel("A Particular Year") plt.ylabel("Number") #绘制网格 alpah设置网格的透明度 plt.grid(alpha=0.4) #添加图例:右上角表示信息(先在plot中添加label参数) plt.legend() plt.show()
散点图
-
第一个程序
from matplotlib import pyplot as plt import random x1=range(1,32) x2=range(51,82) y1=[] y2=[] for i in range(1,32): y1.append(random.randint(10,25)) y2.append(random.randint(5,30)) plt.figure(figsize=(20,10),dpi=80) #调整x轴 _x=list(x1)+list(x2) _xtick_label=["3.{}".format(i) for i in x1] _xtick_label+=['10.{}'.format(i-50) for i in x2] plt.xticks(_x[::3],_xtick_label[::3],rotation=45) #绘制散点图 plt.scatter(x1,y1,label='March') plt.scatter(x2,y2,label='October') #添加描述信息 plt.title("Temperatures in March and October") plt.xlabel('data') plt.ylabel('Temperature') #添加图例 plt.legend(loc='upper left') plt.show()
条形图
-
竖条形图
''' 假设你获得了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何 更加直观的展示该数据? ''' from matplotlib import pyplot as plt, font_manager from pylab import * #设置中文显示 mpl.rcParams['font.sans-serif'] = ['SimHei'] a = ['战狼2', '速度与激情8', '羞羞的铁拳', '前任3:再见前任', '功夫瑜伽', '西游伏妖篇', '变形金刚5:最后的骑士', '芳华', '摔跤吧!爸爸', '寻梦环游记', '加勒比海盗5:死无对证', '金刚:骷髅岛', '极限特工:终极回归', '生化危机6:终章', '乘风破浪', '神偷奶爸3', '智取威虎山', '蜘蛛侠:英雄归来', '大闹天竺', '雷神3:诸神黄昏'] b = [56.39, 26.49, 21.9, 19.26, 17.53, 16.49, 15.45, 14.11, 12.96, 12.02, 11.8, 11.61, 11.28, 11.12, 10.38, 10.3, 8.74, 7.67, 7.55, 7.36 ] plt.figure(figsize=(20,15), dpi=80) # 条形图b # width调整线条宽度 plt.bar(a,b,width=0.3) # 设置x轴 x_t = list(range(len(a))) plt.xticks(x_t,a,rotation=90) plt.show()
-
横条形图
''' 假设你获得了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何 更加直观的展示该数据? ''' from matplotlib import pyplot as plt, font_manager from pylab import * #设置中文显示 mpl.rcParams['font.sans-serif'] = ['SimHei'] a = ['战狼2', '速度与激情8', '羞羞的铁拳', '前任3:再见前任', '功夫瑜伽', '西游伏妖篇', '变形金刚5:最后的骑士', '芳华', '摔跤吧!爸爸', '寻梦环游记', '加勒比海盗5:死无对证', '金刚:骷髅岛', '极限特工:终极回归', '生化危机6:终章', '乘风破浪', '神偷奶爸3', '智取威虎山', '蜘蛛侠:英雄归来', '大闹天竺', '雷神3:诸神黄昏'] b = [56.39, 26.49, 21.9, 19.26, 17.53, 16.49, 15.45, 14.11, 12.96, 12.02, 11.8, 11.61, 11.28, 11.12, 10.38, 10.3, 8.74, 7.67, 7.55, 7.36 ] plt.figure(figsize=(20,15), dpi=80) # 条形图b # width调整线条宽度 plt.barh(a,b,height=0.3) # 设置y轴 y_t = list(range(len(a))) plt.yticks(y_t,a) #添加网格 plt.grid() plt.show()
-
绘制多个条形图
from matplotlib import pyplot as plt from pylab import * #设置中文显示 mpl.rcParams['font.sans-serif'] = ['SimHei'] x=['猩球崛起3:终极之战','敦刻尔克','蜘蛛侠:英雄归来','战狼2'] y1=[15746,312,4497,319] y2=[12357,147,2045,168] y3=[2358,399,2358,262] plt.figure(figsize=(20,10),dpi=80) #绘制多个条形图需要移动x的值,防止重叠 x1=list(range(len(x))) x2=[i+0.2 for i in x1] x3=[i+0.2 for i in x2] plt.bar(x1,y1,width=0.2,label='9月14日') plt.bar(x2,y2,width=0.2,label='9月15日') plt.bar(x3,y3,width=0.2,label='9月16日') plt.xticks(x2,x) #设置图例 plt.legend() plt.show()
直方图
-
绘制直方图
''' 假设你获得了250部电影的时长,希望统出这些电影市场的分布状态(比如时长为100分钟到120分钟电影的数量,出现的频率等),你应该如何呈现这些数据。 ''' from matplotlib import pyplot as plt import random a=[random.randint(100,140) for i in range(250)] #组数=极差/组距 d=5 #组距 num_bine=(max(a)-min(a))//d #组数 #频率直方图需要+density=1 plt.hist(a,num_bine,density=1) #设置x的度数 #max(a)+d防止取不到最大值 plt.xticks(range(min(a),max(a)+d,d),rotation=90) plt.grid() plt.show()