数据分析是用适当的方法对收集的大量数据进行分析,帮助作出判断,以便采取适当行动。
matplotlib
最流行的python底层绘图库,主要做数据可视化图表。
1,能将数据进行可视化,更直观的呈现。
2,使数据更加客观,更具说服力。
折线图:以折线的上升或下降来表示统计数据的增减变化的统计图。
特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)
直方图:由一系列高度不等的纵向条纹或线段表示数据的分布的情况。一般用横轴表示数据范围,纵轴表示分布情况。
特点:绘制连续性的数据,展示一组或者多组数据的分布状况(统计)
条形图:排列在工作表的列或行中数据可以绘制条形图中。
特点:绘制离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别(统计)
散点图:用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。
特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)
折线图
from matplotlib import pyplot as plt import random # 数据在x轴的位置,是一个可迭代的对象 _x=range(2,23,2) # 数据在y轴的位置,是一个可迭代的对象 _y=[round(random.uniform(1,100),2) for _ in range(2,23,2)] print(_x) print(_y) # figure 设置图片的大小 dpi设置图片的清晰度 dot per inch fig=plt.figure(figsize=(20,8),dpi=80) plt.plot(_x,_y) #传入x和y,绘制折线图 # 设置x轴的刻度 #plt.xticks([i/2 for i in range(1,50)][::3]) plt.xticks(_x) # 设置y轴的刻度 plt.yticks(range(int(min(_y)),int(max(_y))+1,5)) # 保存图片 plt.savefig('./temperature.jpg') # 显示图片 plt.show()
import matplotlib from matplotlib import pyplot as plt import random # 方法一:给matplotlib添加支持的字体,针对本ipynb文件临时的设置。 # font={ # "family":"SimHei", # "weight":"bold", # "size":10 # } #matplotlib.rc("font",**font) # 方法二:通过pyplot的字典rcParams设置参数,针对本.ipynb文件临时的设置。 推荐 plt.rcParams['font.sans-serif']=['SimHei'] # 替换sans-serif字体 plt.rcParams['axes.unicode_minus']=False # 解决坐标轴负数的负号显示问题 # 方法三:设置自定义字体(局部),只对相应设置的方法有效 # from matplotlib.font_manager import FontProperties # 这里是将windows中自带的字体注入到matplotlib字体库 # font=FontProperties(fname=r'C:\Windows\Fonts\simsun.ttc',size=12) _x=range(0,120) _y=[random.uniform(20,35) for _ in range(120)] _y1=[random.uniform(20,35) for _ in range(120)] # 图例设置样式 """ color='r # 线条颜色 linestyle='--' # 线条风格 linewidth=5 # 线条粗细 alpha=0.5 # 透明度 """ plt.plot(_x,_y,label='北京',linestyle='--') plt.plot(_x,_y1,label='上海',linestyle=':') # 设置x轴显示的内容 与x轴的刻度是一一对应的,如果显示密集,可以调整步长,rotation 设置显示内容的旋转角度,避免重叠 _x_labels=['1{0}点{1}'.format(i//60,i%60) for i in range(120)] plt.xticks(list(_x)[::5],_x_labels[::5],rotation=45) # 添加描述信息 plt.xlabel('时间') plt.ylabel('温度(度)') plt.title('温度随时间变化图') plt.legend(loc='upper right') # 设置网格 alpha:透明度 plt.grid(alpha=0.4,linestyle='--') plt.show()
1,绘制折线图:plt.plot
2,设置图片的大小和分辨率:plt.figure
3,保存绘制的图片:plt.savefig
4,设置xy轴上的刻度和字符串(xticks)
5,解决刻度稀疏和密集的问题(xticks)
6,设置标题xy轴的label(title,xlabel,ylabel)
7,设置字体(font_manager.fontProperties,matplotlib.rc)
8,在一个图上绘制多个图形(plt多次plot即可)
9,为不同的图形添加图例(legend)
import matplotlib from matplotlib import pyplot as plt import random # 设置字体 matplotlib.rcParams['font.sans-serif']=['SimHei'] matplotlib.rcParams['axes.unicode_minus']=False #设置图片大小 plt.figure(figsize=(20,8),dpi=80) x=range(1,31) x1=[i+40 for i in x] y=[10,12,11,10,13,14,13,15,17,18,19,20,18,19,17,19,22,15,18,17,19,16,14,24,27,30,31,31,30,32] y1=[32, 30, 31, 31, 30, 27, 24, 14, 16, 19, 17, 18, 15, 22, 19, 17, 19, 18, 20, 19, 18, 17, 15, 13, 14, 13, 10, 11, 12, 10] # 散点图 plt.scatter(x,y,label='3月份',color='yellow') plt.scatter(x1,y1,label='10月份',color='red') # 设置x轴刻度 x_lab=['{0}月{1}日'.format(3,i) for i in x] x1_lab=['{0}月{1}日'.format(10,i-40) for i in x1] x_tick=list(x)+x1 x_label=x_lab+x1_lab plt.xticks(x_tick,x_label,rotation=45) #设置y轴刻度 plt.yticks(range(min(y),max(y)+1)) #设置描述信息 plt.xlabel('日期') plt.ylabel('温度') plt.title('北京天气情况') #设置网格 plt.grid(alpha=0.3) # 设置图例 plt.legend(loc='upper left') plt.show()
条形图
from matplotlib import pyplot as plt import matplotlib # 设置字体 matplotlib.rcParams['font.sans-serif']=['SimHei'] matplotlib.rcParams['axes.unicode_minus']=False film=['年会不能停','金手指','潜行','三大队','天降大任','海王2:失落的王国','一闪一闪亮星星','非诚勿扰3','舒克贝塔:五角飞碟','孤军'] box_office=[13,15,10,8,7,19,6,3,7,2] # 设置图形大小 plt.figure(figsize=(20,8),dpi=80) #绘制条形图 plt.bar(range(len(film)),box_office,width=0.1) plt.xticks(range(len(film)),film,rotation=45) # 描述信息 plt.xlabel('电影名称') plt.ylabel('电影票房') plt.title('近期电影票房') plt.show()
其中横向条形图使用plt.barh()
下面是显示多个条形图
from matplotlib import pyplot as plt import matplotlib # 设置字体 matplotlib.rcParams['font.sans-serif']=['SimHei'] matplotlib.rcParams['axes.unicode_minus']=False film=['年会不能停','金手指','潜行','三大队','天降大任'] box_office_1=[2,1,3,1,1] box_office_2=[3,2,2,3,1] box_office_3=[4,1,1,4,2] bar_width=0.2 x_1=list(range(len(film))) x_2=[i+bar_width for i in x_1] x_3=[i+bar_width*2 for i in x_1] # 设置图片大小 plt.figure(figsize=(20,8),dpi=80) # 条形图 width 设置长条的宽度,默认为0.8 plt.bar(x_1,box_office_1,width=bar_width,label='1月1日') plt.bar(x_2,box_office_2,width=bar_width,label='1月2日') plt.bar(x_3,box_office_3,width=bar_width,label='1月3日') # 通过设置x轴的刻度实现字符与字符串对应 plt.xticks(x_2,film) # 设置描述信息 plt.xlabel('日期') plt.ylabel('电影票房') plt.title('三天电影票房') plt.legend(loc='upper right') plt.show()
直方图
from matplotlib import pyplot as plt import random y=[random.randint(100,300) for _ in range(100)] #y=[230, 117, 298, 290, 283, 174, 227, 283, 164, 178, 278, 251, 231, 283, 237, 168, 225, 142, 111, 159, 277, 107, 108, 251, 161, 131, 294, 277, 271, 102, 100, 290, 203, 297, 196, 173, 258, 233, 300, 105, 284, 297, 231, 235, 279, 154, 142, 238, 184, 200, 201, 230, 121, 281, 245, 297, 141, 167, 283, 113, 214, 247, 194, 133, 262, 273, 177, 273, 143, 197, 279, 256, 182, 250, 269, 129, 290, 284, 181, 249, 113, 245, 162, 165, 291, 289, 243, 149, 101, 160, 176, 165, 192, 241, 279, 283, 234, 261, 196, 119] print(y) print(max(y),min(y),max(y)-min(y)) # 组距 d=10 # 组数 bins=(max(y)-min(y))//d # 设置图片大小 plt.figure(figsize=(20,8),dpi=80) # 绘制直方图 plt.hist(y,bins,density=True) plt.xticks(range(min(y),max(y)+d,d)) # 网格 plt.grid(alpha=0.4) plt.show()
posted on
浙公网安备 33010602011771号