matplotlib绘图–本次图形涉及(并列)条形图、(堆积)柱状图、饼图、折线图、阶梯图、散点图、极线图、气泡图;
子区划分:subplots()、gridspec()、add_axes()。

python可视化绘制蜘蛛侠、钢铁侠

这学期学的Python可视化在重点学matplotlib库,于是想用该库里的绘图函数来组合一些有趣的画面,这里并没有用上任何的数据进行分析,只是为了熟悉一些绘图函数。

绘图思路

  1. 构思草图;
  2. 划分子区;
  3. 绘图函数绘图;

结果图:

代码

①设置画布、划分子区:

这部分是子图划分,关于子图划分函数我根据资料和自己的理解写了一些解释放在这里(7种子区划分)。

#导入库
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import matplotlib.gridspec as gridspec
import random
#---------------------------------------
#划分子图
#上区域图
fig1 = plt.figure(figsize=(10,1))
ax1,ax2 = fig1.subplots(1,2)
#调整ax1,ax2之间的垂直间隙
#这里用None没效果换成数值(right、left、top、bottom)
plt.subplots_adjust(wspace=0.2)
#下区域图
fig2 = plt.figure(figsize=(10,10))
gs = gridspec.GridSpec(5,5)
ax3 = plt.subplot(gs[2:4,1])
ax4 = plt.subplot(gs[2:4,4])
ax5 = plt.subplot(gs[4,0:])
ax6 = plt.subplot(gs[2:4,0])
ax7 = plt.subplot(gs[0:2,0:2])
ax9 = plt.subplot(gs[2:4,2:4])
plt.subplots_adjust(hspace=-0.1,wspace=0)

②绘制上区域fig1画布内容

#子图样式设置
#条形图(上区域子图1)
x = 0.5
barh_width=0.6
ax1.barh(x,0.6,align="center",color="#1468B1")
ax1.barh(x+barh_width,1,align="center",color="#E34346")
ax1.set_xlim(0,1)
#条形图(上区域子图2)
ax2.barh(x,0.6,align="center",color="#1468B1")
ax2.barh(x+barh_width,1,align="center",color="#E34346")
ax2.set_xlim(1,0)#逆向
ax2.text(1.17,1,"VS",fontsize=25)
#关闭子区坐标轴
ax1.axis("off")
ax2.axis("off")

(下面都是下区域fig2画布内容)

③绘制蜘蛛侠的手和身体

x1 = 0
x2 = [-0.5,0.5]
x3 = [-1,-0.6,0.6,1]
y1 = [-1.5,-1,-1,-1.5]#折线图绘制蜘蛛侠的手
ax3.plot(x3[0:2],y1[0:2],color="#4440FE",marker='o',ms=15,mfc="#C40004",)
ax3.plot(x3[2:4],y1[2:4],color="#4440FE",marker='o',ms=15,mfc="#C40004",)
#堆积柱状图绘制蜘蛛侠的身体
ax3.bar(x1,-0.95,width=1.2,color="#000000",)
ax3.bar(x1,-0.55,width=1.2,bottom=-0.95,color="#C40004",)
ax3.bar(x1,-0.5,width=1.2,bottom=-1.5,color="#4440FE",)ax3.bar(x2,-0.4,width=0.7,bottom=-2,color="#C40004")

④绘制钢铁侠的手和身体

#折线图绘制钢铁侠的手
#x3 = [-1,-0.6,0.6,1]
#y1 = [-1.5,-1,-1,-1.5]
ax4.plot([-1.1,-0.6],[-1.2,-1],color="#F6E72F",marker='o',ms=15,mfc="#C40004",)
ax4.plot(x3[2:4],y1[2:4],color="#F6E72F",marker='o',ms=15,mfc="#C40004",)
#堆积柱状图绘制钢铁侠的身体
ax4.bar(x1,-0.95,width=1.2,color="#000000",)
ax4.bar(x1,-0.55,width=1.2,bottom=-0.95,color="#C40004",)
ax4.bar(x1,-0.5,width=1.2,bottom=-1.5,color="#F6E72F",)ax4.bar(x2,-0.4,width=0.7,bottom=-2,color="#C40004")

⑤ 绘制两者头部

#内嵌饼图绘制蜘蛛侠的头
weight1 = [1]
weight2 = [0.3,0.20,0.3]out_colors = ["#C40004"]
inner_colors1 = ["#FFFFFF","#C40004","#FFFFFF"]ax3.pie(weight1,colors=out_colors      )
ax3.axis('equal')
ax3.pie(weight2,radius=0.75,startangle=-55,colors=inner_colors1,explode=(0.1,0.0,0.1))#内嵌饼图绘制钢铁侠的头
weight3 = [0.05, 0.15, 0.15, 0.15, 0.05, 0.45]
inner_colors2 = ["#FFFFFF","#F6E72F","#C40004","#F6E72F","#FFFFFF","#F6E72F"]ax4.pie(weight1,colors=out_colors,)
ax4.axis('equal')
ax4.pie(weight3,radius=0.8,startangle=-10,colors=inner_colors2)

⑥绘制地面

#阶梯图绘制地面
x4 = np.linspace(0,10,60)
y2 = np.random.rand(60)ax5.step(x4,y2,color="#5C370D",where="pre",lw=2,)
ax5.set_xlim(0,10)
ax5.set_ylim(0,1)
ax5.axvspan(xmin=0,xmax=10,facecolor="#704A23")
ax5.axis([0,10,0.3,0.7])#调整图形紧凑度
ax5.axis("off")

⑦绘制树干树叶

#条形图和柱状图绘制树干
#这里的参数调整和xy轴调整是为了让树干贴合地面
x5 = [0.5,1]
y3 = [9.5,9.5]
ax6.barh(9.5, 2.5,color="#7A5223",hatch="/-")
ax6.bar(x5,y3,color="#7A5223",width=1,hatch="/-")ax6.set_xlim(0,3)
ax6.set_ylim(-0.5,9.5)
ax6.axis("off")#---------------------------------------
#散点图绘制树叶
for i in range(5):color_tree = ["#4EE376","#09A734","#09A734","#009424","#009424"]a = 0.3+(0.05*i)x6 = [a,2*a,3*a,4*a,5*a]y4 = [i,i,i,i,i]ax7.scatter(x6,y4,color=color_tree[i],s=10000*0.4*i,marker='o')ax7.set_xlim(0,5)
ax7.set_ylim(0.2,5)
ax7.axis("off")

⑧绘制蜘蛛网

#极线图绘制蜘蛛网
ax8 = fig2.add_axes([0.4,0.3,0.2,0.2],projection='polar')#把子图设置为极坐标for i in range(9):   num = 8theta1 = np.linspace(0,2*np.pi,num)r1 = np.array([i,i,i,i,i,i,i,i])ax8.plot(theta1,r1,color="#9B9B9B",alpha=0.6)
#米字网
for i in range(8):  theta2 = np.linspace(0,3/4*i*np.pi,2)r2 = np.array([0,8])ax8.plot(theta2,r2,color="#9B9B9B",alpha=0.6)
ax8.axis("off")

⑨绘制光波/束

#折线图绘制光束
x8 = np.random.rand(50)
y6 = np.random.rand(50)
ax9.set_ylim(-0.5,2)
ax9.set_xlim(1,0.5)
for i in range(3):ax9.plot([0.5,0.9],[0.1*i,0.1*i],color="#FFF065",lw=6)#气泡图绘制冲击波
ax9.scatter(x8,y6,s=np.power(10*x8+20*y6,2),#c=np.random.rand(50), #colormap缩写,设置后显示红黄蓝三色映射#cmap=mpl.cm.RdYlBu,c="#FFF065",#散点标记的颜色marker='o',alpha=0.8)
ax9.axis("off")

结束

只要熟悉某一个绘图库的绘图函数、辅助层函数以及子区划分,Python绘图就可以组合出任意的图画。但归根结底Python可视化需要结合到数据分析上才是其初衷。

python可视化之matplotlib绘图--蜘蛛侠钢铁侠(组合分区绘图)相关推荐

  1. Python可视化(matplotlib)在图像中添加文本和标记(Text and Annotation)

    Python可视化(matplotlib)在图像中添加文本和标记(Text and Annotation) 目录 Python可视化(matplotlib)在图形中添加文本和标记(Text and A ...

  2. Python可视化(matplotlib)图像自定义图例(Legend)

    Python可视化(matplotlib)图像自定义图例(Legend) 目录 Python可视化(matplotlib)图像自定义图例(Legend) 简单图例

  3. Python可视化(matplotlib)图像之误差可视化(Visualizing Errors)

    Python可视化(matplotlib)图像之误差可视化(Visualizing Errors) 目录 Python可视化(matplotlib)图像之误差可视化(Visualizing Error ...

  4. [数据可视化]使用matplotlib对CSV文件数据进行绘图

    [数据可视化]使用matplotlib对CSV文件数据进行绘图 使用CSV格式的锡特卡天气数据 绘制2018年1月1日的天气数据,先放成果: 代码部分包括以下内容: 分析CSV文件头 打印文件头及其位 ...

  5. python matplotlib_高效使用 Python 可视化工具 Matplotlib

    来源 / python开发 作者 / 伯乐在线李大萌 Matplotlib是Python中最常用的可视化工具之一,可以非常方便地创建海量类型的2D图表和一些基本的3D图表.本文主要推荐一个学习使用Ma ...

  6. python可视化工具:matplotlib+pyecharts使用详解

    准备 一.matplotlib快速入门 二.matplotlib进阶–绘制常见的图表 1.绘制折线图 2.绘制柱状图 3.绘制条形图 4.绘制直方图 5.绘制饼状图 6.绘制散点图 7.绘制堆叠图 三 ...

  7. python怎么用matplotlib_高效使用Python可视化工具Matplotlib

    Matplotlib是Python中最常用的可视化工具之一,可以非常方便地创建海量类型的2D图表和一些基本的3D图表.本文主要介绍了在学习Matplotlib时面临的一些挑战,为什么要使用Matplo ...

  8. python可视化之matplotlib折线图(一)

    python可视化学习笔记之matplotlib,先从最基本的折线图开始学习记录. 1.最基本的折现图 import matplotlib.pyplot as plt# 数据 x = [1,2,3,4 ...

  9. Python可视化库Matplotlib绘图入门详解

    Matplotlib是Python的绘图库,其中的pyplot包封装了很多画图的函数. Matplotlib.pyplot 包含一系列类似 MATLAB 中绘图函数的相关函数.每个 Matplotli ...

最新文章

  1. UVA11292杀怪
  2. 从Python代码到APP,你只需要一个小工具:GitHub已超3000星
  3. 简述C# XML解析方法的特点及应用
  4. Spring MVC:使用SimpleUrlHandlerMapping的一个简单例子
  5. android:versionCode和android:versionName 用途
  6. java类验证和装载顺序_Java类的加载顺序
  7. 面向对象、继承、抽象方法重载知识点整理
  8. 使用Linux命令行测试网速
  9. jfinal 任务调度与jsoup 爬虫
  10. linux进入超级管理员权限,一直处于超级管理员权限下
  11. 电视android怎么连接手机助手下载,电视与手机怎么连接?最实用的三种小技巧!...
  12. 重装系统 winserver2008 R2 激活以及优化
  13. twaver html5 2d demo,TWaver 2D+GIS+3D的试用和在线Demo
  14. ios睡眠分析 卧床 睡眠_苹果ios14睡眠记录功能 让用户清楚的了解自己的睡眠
  15. Vision Transformer(VIT)代码分析——保姆级教程
  16. 无人机航模电池上面有20C 30C,这是放电倍率
  17. windbg解决程序CPU占用率高,内存占用时高时低现象
  18. 视觉惯性单目SLAM (五)矩阵微积分
  19. 【人工智能】对贝叶斯网络进行吉布斯采样
  20. 一文带你了解什么是IP地址

热门文章

  1. 【中等】折纸问题-Java
  2. 牛客小白月赛37 E.紫妹永不服输(构造)
  3. linux执行脚本提示文件忙,linux定时执行脚本文件fgo 封号吗
  4. 输出1000以内能被7整除又能被5整除的数
  5. 去中心化存储项目终极指南 | Filecoin, Storj 和 PPIO 项目异同 (上)
  6. ASAM_CCP_V2.1.0_cn
  7. 按键精灵——欲望驱使之下的碧蓝航线12-4练级脚本
  8. VS注释提示英文变中文的方法
  9. Process finished with exit code -1073740791 (0xC0000409)报错解决方案
  10. 射击场建设实施方案,实弹打靶和模拟影像并存的关系