Matplotlib绘图一般用于数据可视化
1.常用的图表有:
- 折线图(坐标系图)
- 散点图/气泡图
- 条形图/柱状图
- 饼图
- 直方图
- 箱线图
- 热力图
折线图(坐标系图)
折线图用于显示随时间或有序类别的变化趋势
#载入matplotlib绘图库 import matplotlib.pyplot as plt # 绘制一条线时,x轴可以省略,默认用y轴数据的索引代替 plt.plot([0,2,4,6,8]) # 默认Y轴坐标 plt.plot([0,2,4,6,8],[1,5,3,9,7]) # X轴坐标值,Y轴坐标值 plt.show() #显示图片
线条和标记节点样式
标记字符:标记线条中的点
- 线条颜色,color='g'
- 线条风格,linestyle='--'
- 线条粗细,linewidth=5.0
- 标记风格,marker='o'
- 标记颜色,markerfacecolor='b'
- 标记尺寸,markersize=20
- 透明度,alpha=0.5
线条和标记节点格式字符
- 如果不设置颜色,系统默认会取一个不同颜色来区别线条
- 图像打印时,黑白打印机不能区分颜色,需要风格区分
折线图案例:2017年7月国际外汇
时间 收盘价 2017年7月3日 6.8007 2017年7月4日 6.8007 2017年7月5日 6.8015 2017年7月6日 6.8015 2017年7月7日 6.8060 2017年7月10日 6.8036 2017年7月11日 6.8025 2017年7月12日 6.7877 2017年7月13日 6.7835 2017年7月14日 6.7758 2017年7月17日 6.7700 2017年7月18日 6.7463 2017年7月19日 6.7519 2017年7月20日 6.7595 2017年7月21日 6.7669 2017年7月24日 6.7511 2017年7月25日 6.7511 2017年7月26日 6.7539 2017年7月27日 6.7430 2017年7月28日 6.7374 2017年7月31日 6.7265
import matplotlib.pyplot as plot
date = [3,4,5,6,7,10,11,12,13,14,17,18,19,20,21,24,25,26,27,28,31] eurcny = [6.8007, 6.8007, 6.8015, 6.8015, 6.8060, 6.8036, 6.8025, 6.7877, 6.7835, 6.7758, 6.7700, 6.7463, 6.7519, 6.7595, 6.7669, 6.7511, 6.7511, 6.7539, 6.7430, 6.7374, 6.7265] plot.plot( date, #X坐标 eurcny, #Y坐标 color = '#00ff00', #折线颜色 linestyle = '--', linewidth = 2, marker = 'o', #节点样式 markerfacecolor = '#00FFFF', #节点颜色 markersize = 5, alpha = 0.5, #透明色 ) plot.show()
散点图
散点图表示多组数据之间的相关性
import matplotlib.pyplot as plot
x = [1,3,5,7,9,11,13,15,17] y = [2,-5,19,3,5,8,12,6,1] plot.scatter( x, y, ) plot.show()
import matplotlib.pyplot as plot
x = [1,3,5,7,9,11,13,15,17] y = [2,-5,19,3,5,8,12,6,1] plot.scatter( x, y, # 散点大小 s = [1,10,30,60,100,300,500,800,1000], color = 'r', marker = 'H', linewidth = 10, alpha = 0.3, ) #折线图 plot.plot([1,3,9,2,5,4,1,5,9,12,30,22,1,5,10]) plot.show()
案例:可视化居民年龄/收入和超市销售额的对应关系
年龄 收入 销售额
34 350 123
40 450 114
37 169 135
30 189 139
44 183 117
36 80 121
32 166 133
26 120 140
32 75 133
36 40 133
找出:
- 客户年龄和销售额的关系
- 客户收入和销售额的关系
#年龄 age = [34, 40, 37, 30, 44, 36, 32, 26, 32, 36] #收入 income = [350, 450, 169, 189, 183, 80, 166, 120, 75, 40] #销售额 sales = [123, 114, 135, 139, 117, 121, 133, 140, 133, 133] plot.scatter( age, sales, ) plot.show() plot.scatter( income, sales, ) plot.show() #x轴,y轴 ,点大小,三个维度 plot.scatter( age, sales, s = income, ) plot.show()