龙空技术网

如何用Python绘制可视化图,7类常见图表代码示例

吊车尾学院一木木老师 656

前言:

当前姐妹们对“python画图形状代码”大体比较讲究,各位老铁们都想要分析一些“python画图形状代码”的相关知识。那么小编同时在网络上收集了一些对于“python画图形状代码””的相关内容,希望小伙伴们能喜欢,你们一起来了解一下吧!

做数据分析,免不了将数据转化为可视化图表。

一般来说,比较基础的图,用Excel就可以实现。但是,当我们对图表有更高的要求时,譬如,需要更高级的图表类型、矢量图、动图、自动化图表等,以及部分专业学科图表,譬如生命科学等,Excel的图表就爱莫能助了。这时候,我会推荐你用Python可视化库。

Python有很多可视化库,其中运用最多的是Matplotlib库。它是一个非常基础的数据可视化库,是Python可视化库绕不开的部分。

今天,木木老师将分享常见的图表,如何通过Python的Matplotlib库实现。本篇适合刚入门Python数据分析的同学,建议收藏。

柱状图折线图饼状图散点图雷达图漏斗图面积图柱状图

import matplotlib #导入matplotlib库import pandas as pd #导入pandas库import numpy as np #导入numpy库import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] #设置中文x = ['深造(国内)', '深造(出国、境)', '就业(签三方)', '就业(灵活)', '创业', '拟深造', '待就业','未定']y = [2366,674,2812,991,36,51,17,84]plt.figure(figsize=(10,7))#设置画布的尺寸plt.bar(x = x,height = y,width = 0.7,alpha = 0.5,color = 'red', label='我是图例')# x:横坐标(list格式)# y:纵坐标(list格式)# width:柱子的宽度,即在x轴上的长度,默认是0.8# color:柱子的填充色# edgecolor:柱子边框的颜色,默认为None# linewidth:柱子边框的宽度,默认为0,表示没有边框# alpha:透明度,值越小越透明# lable:标签值,图例# lw:线的宽度# bottom:y轴起始位置# orientation:控制水平/竖直# yerr:添加误差线,# ecolor :误差线颜色plt.title('2020年清华大学毕业生去向',fontsize=20) #设置标题plt.xlabel('毕业去向',fontsize=14) #设置x轴plt.ylabel('人数',fontsize=14) #设置y轴for a,b in zip(x,y):plt.text(a,b+0.1,'%.0f'%b,ha = 'center',va = 'bottom',fontsize=12) #添加数据标签plt.show()
折线图
import matplotlib #导入matplotlib库import pandas as pd #导入pandas库import numpy as np #导入numpy库import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] #设置中文plt.figure(figsize=(9,8))x_data = ['2012年','2013年','2014','2015','2016','2017','2018','2019','2020','2021']y_data = [166,176,172,165,177,201,238,290,341,377]ax1 = plt.plot(x_data, y_data, color='green', marker='o', linestyle='dashed',linewidth=2, markersize=12)plt.tick_params(labelsize=13)plt.xlabel("年份", fontsize = 20)plt.ylabel("人数(/万)", fontsize = 20)plt.title('2012-2021年研究生报考人数', fontsize = 20)plt.savefig("B_02.png")plt.show()
饼状图
import matplotlibimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] #设置中文plt.figure(figsize=(8,9),dpi = 100)labels = ['0-15岁','16-59岁','60-64岁','65岁以上']sizes = [24977,89640,7785,17603]colors = ['#B0C4DE','#ADD8E6','#87CEFA','#4682B4'] #每块颜色定义patches,l_text,p_text = plt.pie(sizes,labels=labels,colors=colors,autopct = '%3.2f%%', #数值保留固定小数位startangle = 90, #逆时针起始角度设置pctdistance = 0.5) #数值距圆心半径倍数距离# x: array, 代表了每部分的值。每个标签占多大,会自动去算百分比。# explode: list, 将某一块分割出来;例如[0,0,0.5,0] 将第四块分割出来且数值越大分割出来越大# label: list, 每一部分标签# colors: array-like, 使用颜色。详见色卡rgb# autopct: 百分比精确到小数点末尾# pctdistance: 数值距圆心半径倍数距离# shadow: 饼图阴影的大小# labeldistance: 标签的距离# startangle: 第一块楔形开始的角度# radius: 饼图的半径# counterlock: 画图方向# wedgeprops: 传递给楔形对象的楔形对象的参数字典。# textprops: 传递给文本对象的参数字典。# center: 图表的中心位置# frame: True则图表绘制轴框架# rotatelabels: True则每个标签旋转到相应切片的角度# 修改标签内数值和字体的大小for t in l_text:t.set_size(30)for t in p_text:t.set_size(17)plt.title("2019年年末人口年龄构成",fontsize = 25)plt.axis('equal')plt.show()
散点图
import matplotlibimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] #设置中文plt.figure(figsize = (10,7))x = [140,151.1,165.6,176,172,164.9,177,201,238,290]y = [47.4,49.5,52,54,54.9,57,58.9,72.2,76.2,81.1]plt.scatter(x,y,marker ='o',color = 'w',edgecolor = 'blue',s =150)# s: 散点的大小# c: 调整颜色# marker: 形状# alpha: 0~1 透明度# linewidths: 标记边缘的线宽# edgecolors: 散点边的颜色# cmap: 颜色是浮点数的时候设置# norm: 0-1范围内缩放颜色的范围# vmin: 颜色的最小取值# vmax: 颜色的最大取值plt.title("2010-2019年研究生报考招生人数",fontsize =20) # 图形标题plt.xlabel("报考人数(万)",fontsize = 14) # x轴名称plt.ylabel("招生人数(万)",fontsize = 14) # y轴名称plt.show()
雷达图
import matplotlibimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] #设置中文types = ["语文", "数学", "外语", "物理", "化学"]actual = [92, 83, 95, 70, 78,92]expected = [79, 98, 59, 92, 89,79]plt.figure(figsize =(9, 8))plt.subplot(polar = True)theta = np.linspace(0, 2 * np.pi, len(actual)) #将圆根据标签的个数等比分lines, labels = plt.thetagrids(range(0, 360, int(360/len(types))),(types))plt.plot(theta, actual) #绘图plt.fill(theta, actual, 'b', alpha = 0.1) #填充plt.plot(theta, expected) #绘图plt.fill(theta, expected, 'r', alpha = 0.1) #填充plt.legend(labels =('学生1', '学生2'),bbox_to_anchor=(1, 0.2, 0.2, 0.8), fontsize=15)plt.title('期末考试成绩对比图', fontsize = 20) #图形标题plt.tick_params(labelsize=20)plt.show()
漏斗图
import matplotlibimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] #设置中文N = 5width = 0.5x1 = np.array([1000, 400, 260, 200, 170])x2= np.array((x1.max()-x1)/2)x3=[]for i,j in zip(x1,x2):x3.append(i+j)x3 = np.array(x3)y = -np.sort(-np.arange(N))labels=['浏览商品','放入购物车','提交订单','支付订单','完成交易']fig = plt.figure(figsize=(12,8))ax = fig.add_subplot(111)ax.barh(y,x3,width,tick_label=labels,color=['#BCEE68','#FFF68F','#FFC1C1','#C6E2FF','#AB82FF'],alpha=0.85)ax.plot(x3,y,'grey',alpha=0.7)ax.barh(y,x2,width,color='w',alpha = 1)ax.plot(x2,y,'grey',alpha=0.7)transform = []for i in range(0,len(x1)):if i < len(x1)-1:transform.append('%.2f%%'%((x1[i+1]/x1[i])*100))l = [(500,3),(500,2),(500, 1),(500, 0)]for a,b in zip(transform,l):offsetbox = TextArea(a, minimumdescent=False)ab = AnnotationBbox(offsetbox, b,xybox=(0, 40),boxcoords="offset points",arrowprops=dict(arrowstyle="->"))ax.add_artist(ab)ax.set_xticks([0,1000])ax.set_yticks(y)plt.xlabel("人数", fontsize = 20) #设置x轴plt.ylabel("电商转化流程", fontsize = 20) #设置y轴plt.title('某电商转化漏斗图', fontsize = 20) #设置标题plt.tick_params(labelsize=13)plt.show()
面积图
import matplotlibimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] #设置中文x = ['2015年','2016年','2017年','2018年','2019年','2020年']y1 = [796,800,813,796,699,459]y2 = [165,174,153,166,137,134]y3 = [98,123,157,184,199,81]labels = ["本科生 ", "硕士生", "博士生"]fig, ax = plt.subplots(figsize = (9,8))ax.stackplot(x, y1, y2, y3, labels=labels,colors = ["#00BFFF","#76EE00","#EEEE00"])ax.legend(loc='upper left', prop={'size':15})plt.xlabel("年份", fontsize = 20)plt.ylabel("人数", fontsize = 20)plt.title('2015-2020年清华大学毕业生出国(境)深造人数', fontsize = 20)plt.tick_params(labelsize=13)plt.show()

今天的内容就分享完毕了。正如文章开头所说的,Python有很多可视化库,下次我再介绍一些比较常用的库。以及,今天介绍的图表都是非常基础的,之后我会分享更多高级图表的制作。

往期精彩内容

超强盘点!让Excel效率起飞的5个Python库

Python入门,一定要吃透这69个内置函数

我有8个Excel录入诀窍,告别一个个填坑的笨办法

学透这10个Python爬虫框架,轻松获取一切数据

标签: #python画图形状代码