Matplotlib之画图模块

目录

Matplotlib简介

条形图

折线图

散点图 


Matplotlib简介

Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。

Matplotlib 可以用来绘制各种静态,动态,交互式的图表。

Matplotlib 是一个非常强大的 Python 画图工具,我们可以使用该工具将很多数据通过图表的形式更直观的呈现出来。

Matplotlib 可以绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等。

条形图

这是某些受欢迎电影的销量数据

a = ["战狼","速度与激情","功夫瑜伽","变形金刚","最后的骑士","摔跤吧","加勒比海盗","生化危机","金刚狼","蜘蛛侠"]

b = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12]  单位: 亿

方法一: 使用条形图,垂直方向展示

from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname = '/System/Library/Fonts/PingFang.ttc')

a = ["战狼","速度与激情","功夫瑜伽","变形金刚","最后的骑士","摔跤吧","加勒比海盗\n牙买加","生化危机","金刚狼","蜘蛛侠"]  #若电影名太长,可在其中间加入\n进行换行分割

b = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12]

plt.figure(figsize=(12,8) , dpi=100)

#就此处不一样
plt.bar(range(len(a)) , b , width=0.3)          # def bar(x轴显示内容 , height , width=0.8),  width控制条形图'条的粗细';  

#设置字符串在x轴上
plt.xticks( range(len(a) ), a , rotation=30 , fontproperties= my_font )

#plt.savefig('./电影.jpg')
plt.xlabel('电影名' , fontproperties= my_font)

plt.ylabel('单位:亿元' , fontproperties= my_font)

plt.title('电影销量统计' , fontproperties= my_font)

plt.show()

Matplotlib之画图模块_第1张图片

方法二: 使用条形图,水平方向展示

from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname = '/System/Library/Fonts/PingFang.ttc')

a = ["战狼","速度与激情","功夫瑜伽","变形金刚","最后的骑士","摔跤吧","加勒比海盗\n牙买加","生化危机","金刚狼","蜘蛛侠"]

b = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12]

plt.figure(figsize=(15,8) , dpi=100)

plt.barh(range(len(a)) , b , height=0.2 , color='orange')  # def barh(y轴显示内容, width, height=0.8)  height控制线条粗细

#设置字符串在x轴上
plt.yticks(range(len(a)), a ,fontproperties= my_font)

#plt.savefig('./电影.jpg')

plt.grid(alpha=0.25 )

plt.xlabel('单位:亿元' , fontproperties= my_font)

plt.ylabel('电影名' , fontproperties= my_font)

plt.title('电影销量统计' , fontproperties= my_font)

plt.show()

Matplotlib之画图模块_第2张图片

折线图

统计出你与同桌个子从11岁到30岁每年交朋友数量,如列表y_1和列表y_2,请在1个图中绘制出该折线图:

y_1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]

y_2 = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]

要求:

x轴表示岁数,比如11岁,12岁等

y轴表示个数

from matplotlib import pyplot as plt
from matplotlib import font_manager

x = range(11,31)

y_1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]

y_2 = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]

my_font = font_manager.FontProperties(fname = '/System/Library/Fonts/PingFang.ttc')

plt.figure( figsize=(13,8) , dpi=100 )                      # 设置图片大小

plt.plot(x , y_1 , label='自己' , color='cyan' , linestyle='-' , linewidth=3 )  # 有label后得在下方添加图例 , 不然标记不显示

plt.plot(x , y_2 , label='同桌',color='r',linestyle='--')

#设置x轴刻度
_xtick_labes = ['{}岁'.format(i) for i in range(11,31)]     # 对x轴字符串进行处理

plt.xticks(x, _xtick_labes, fontproperties=my_font)    

#绘制网格
plt.grid( alpha=0.15 , color='c' , linewidth=0.5 )          # 透明度alpha为0~1【其它方面控制线条】

#plt.yticks(range(0,7,1))                                   # 控制y的刻度

#添加图例【为上边函数plot()中label=="自己、同桌" 添加图例】
plt.legend( loc='upper left' , prop=my_font )               # 只有这1块用prop=...  ;loc='图例在折线图中的位置'

plt.xlabel('年龄' , fontproperties=my_font)

plt.ylabel('数量' , fontproperties=my_font)

plt.title('交朋友折线统计图' , fontproperties=my_font)

plt.show()

Matplotlib之画图模块_第3张图片

散点图 

例:北京最高气温
以下是北京2022年3,10月份每天的最高气温(分别位于列表a,b),那么此时如何寻找出气温和随时间(天)变化的某种规律?

y_3 =  [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]

y_10 = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13,6]

from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname='/System/Library/Fonts/PingFang.ttc')

x_3  = range(1,32)                                                     # 天数

x_10 = range(51,82)

y_3 =  [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]

y_10 = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13,6]

#设置图形大小
plt.figure( figsize=(13,8) , dpi=100 )

#使用scatter()绘制散点图,与之前plot()绘制折线图,这是两者的唯一区别
plt.scatter(x_3,y_3 , label='3月份') # 添加了label后,得有下边图例才能显示

plt.scatter(x_10,y_10 , label='10月份')

#若加上以下这2行后,会将以上的'散点图'的点连接起来,成为了'折线图'

#plt.plot(x_3,y_3)

#plt.plot(x_10,y_10)

#调整x轴的刻度
_x = list(x_3) + list(x_10)

_xtrick_label = [  '3月{}日'.format(i) for i in x_3 ]

_xtrick_label += [ '10月{}日'.format( i-50 ) for i in x_10 ]

plt.xticks(_x[::3] , _xtrick_label[::3] , rotation=45 , fontproperties=my_font )      # [::3]表示控制取步长

#添加图例
plt.legend( loc='upper left' , prop=my_font )

#添加描述信息
plt.xlabel('时间',fontproperties=my_font)

plt.ylabel('温度',fontproperties=my_font)

plt.title('北京3月、10月最高气温展示',fontproperties=my_font)

plt.show()

Matplotlib之画图模块_第4张图片

你可能感兴趣的:(python,matplotlib,python,信息可视化)