首页 > 编程语言 >python-数据分析-Matplotlib-1-进阶图形(气泡图-面积图-雷达图-玫瑰图-3D图)

python-数据分析-Matplotlib-1-进阶图形(气泡图-面积图-雷达图-玫瑰图-3D图)

时间:2024-06-12 16:56:45浏览次数:11  
标签:plt 进阶 python Matplotlib values np import array 3D

气泡图

# -*- coding: utf-8 -*-
#气泡图
#气泡图可以用来了解三个变量之间的关系,通过比较气泡位置和大小来分析数据维度之间的相关性。
#例如在我们之前绘制的月收入和网购支出的散点图中,我们已经发现了二者的正相关关系,如果我们引入第三个变量网购次数,那么我们就需要使用气泡图来进行展示。

import matplotlib.pyplot as plt
import numpy as np

income = np.array([5550, 7500, 10500, 15000, 20000, 25000, 30000, 40000])
outcome = np.array([800, 1800, 1250, 2000, 1800, 2100, 2500, 3500])
nums = np.array([5, 3, 10, 5, 12, 20, 8, 10])

#绘制气泡图
#通过scatter函数的s参数和c参数控制气泡的面积和颜色
#颜色映射,通过cmap参数指定颜色映射
plt.scatter(income, outcome, s=nums*30, c=nums, cmap='Reds')

#显示颜色条
plt.colorbar()
plt.show()

面积图

# -*- coding: utf-8 -*-
#面积图
#面积图又叫堆叠折线图,是在折线图的基础上,对折线以下的区域进行颜色填充(展示面积),用于在连续间隔或时间跨度上展示数值,
#一般用来显示趋势和对比数值,不同颜色的填充可以让多个面积块之间的对比和趋势更好的突显

import matplotlib.pyplot as plt
import numpy as np

#设置字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

#绘制画布
plt.figure(figsize=(8,6), dpi=120)
days=np.arange(7)   #创建一个7位的数组 0-7
sleeping = [7,8,6,11,7,8,13]
eating = [2,3,4,3,2,1,1]
working = [7,8,7,2,2,7,10]
playing = [8,5,7,8,13,11,12]

#绘制堆叠折线图
#colors 自定义颜色 
# plt.stackplot(days, sleeping, eating, working, playing, colors=['m','c','r','k'])
plt.stackplot(days, sleeping, eating, working, playing)

#定制横轴x刻度
# plt.xticks(days, labels=['周一','周二','周三','周四','周五','周六','周日'])
plt.xticks(days, labels=[f'星期{x}' for x in '一二三四五六日'])

#定制图例标签
plt.legend(['睡觉','吃饭','工作','娱乐'], loc='upper right', fontsize=10)
plt.show()

雷达图

# -*- coding: utf-8 -*-
#雷达图
#雷达图通常用来比较多个定量数据,用于查看哪些变量具有相似的值。
#雷达图也可用于查看数据集中哪些变量的值比较低,哪些变量的值比较高,是显示性能或表现的理想选择。
#经常观看篮球、足球比赛的读者应该对雷达图非常熟悉,例如在 NBA 的转播中就经常使用雷达图来展示球员的各项数据。
#雷达图的本质折线图,只不过将折线图映射到了极坐标系。在绘制雷达图时,需要让折线闭合,简单的说就是首尾相连,下面是绘制雷达图的代码。

import matplotlib.pyplot as plt
import numpy as np

#设置字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

#配置数据
labels = np.array(['速度', '力量', '经验', '防守', '发球', '技术'])
## 马龙和水谷隼的数据
malong_values = np.array([93, 95, 98, 92, 96, 97])
shuigu_values = np.array([30, 40, 65, 80, 45, 60])

#角度·
angles = np.linspace(0, 2*np.pi, labels.size, endpoint=False)

#多加一条让图形闭合
#append:添加元素
malong_values = np.append(malong_values, malong_values[0])
shuigu_values = np.append(shuigu_values, shuigu_values[0])
angles = np.append(angles, angles[0])

#创建画布
fig = plt.figure(figsize=(8, 8), dpi=120)
#创建坐标系
ax = plt.subplot(projection='polar')

#绘图和填充
plt.plot(angles, malong_values, color='r', linewidth=2, label='马龙')
plt.fill(angles, malong_values, facecolor='r', alpha=0.3)
plt.plot(angles, shuigu_values, color='b', linewidth=2, label='水谷隼')
plt.fill(angles, shuigu_values, facecolor='b', alpha=0.2)

#设置标签
ax.legend()
plt.show()

玫瑰图

# -*- coding: utf-8 -*-
#玫瑰图·
#玫瑰图是映射在极坐标下的柱状图,由弗罗伦斯·南丁格尔(Florence Nightingale)所发明,当年是南丁格尔用来呈现战地医院季节性死亡率的一种图表。
#由于半径和面积的关系是平方的关系,南丁格尔玫瑰图会将数据的比例大小夸大,尤其适合对比大小相近的数值,同时由于圆形有周期的特性,
#所以南丁格尔玫瑰图也适用于表示一个周期内的时间概念,比如星期、月份

import matplotlib.pyplot as plt
import numpy as np

#设置字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

group1 = np.random.randint(20, 50, 4)   #随机生成4个数据
group2 = np.random.randint(10, 60, 4)
x = np.array([f'A组-Q{i}' for i in range(1, 5)] + [f'B组-Q{i}' for i in range(1, 5)])
y = np.array(group1.tolist() + group2.tolist())

#玫瑰花瓣的角度和宽度
theta = np.linspace(0, 2 * np.pi, x.size, endpoint=False)
width = 2 * np.pi / x.size

#生成8中随机颜色
colors = np.random.rand(8, 3)

#将柱状图投影到极坐标
ax = plt.subplot(projection='polar')

#绘制柱状图
plt.bar(theta, y, width=width, bottom=0.0, color=colors, alpha=0.5)

#设置网格
ax.set_thetagrids(theta * 180 / np.pi, x, fontsize=10)

plt.show()

3D图表

# -*- coding: utf-8 -*-
#3D图表

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

#创建一个画布
fig = plt.figure(figsize=(8,6), dpi=120)

#创建一个3D坐标系、并添加到画布上
ax = Axes3D(fig, auto_add_to_figure=False)
fig.add_axes(ax)    #添加到画布上

x = np.arange(-2, 2, 0.1)   #生成x轴数据
y = np.arange(-2, 2, 0.1)   #生成y轴数据
x, y = np.meshgrid(x, y)    #生成网格数据
z = (1 - y ** 5 + x ** 5) * np.exp(-x ** 2 - y ** 2)    #生成z轴数据

#绘制3D曲面
ax.plot_surface(x, y, z)
plt.show()

#需要指出的是, JupyterLab 中渲染的3D图并不是真正的3D图,因为你没有办法调整观察者的视角,也没有办法旋转或者缩放。
#如果想要看到真正的3D效果,需要在将图表渲染到 Qt 窗口中,为此我们可以先安装名为 PyQt6 的三方库,如下所示。
# pip install PyQt6
#然后,我们使用魔法指令让 JupyterLab 将图表渲染到 Qt 窗口中。
# %matplotlib qt

 

标签:plt,进阶,python,Matplotlib,values,np,import,array,3D
From: https://www.cnblogs.com/littlecc/p/18244255

相关文章

  • python 代码说明 RAS基本原理
    importgmpy2q=7p=11e=13m=71if__name__=='__main__':print('step0公钥和私钥')print('公钥(n,e)')print('私钥(n,d)')#step1n=p*qprint(f'\nstep1最大公约数')......
  • SSM-小区物业管理系统-48954(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP、爬虫、
    基于SSM小区物业管理系统摘要随着计算机科学技术日渐成熟,人们已经深刻认识到了计算机功能的强大,计算机已经进入到了人类社会发展的各个领域,并且发挥着十分重要的作用。每个社区的物业管理是一项系统而复杂的工作,它需要一个团队互相配合、分工协作。在该领域,传统的手工存取......
  • pythonocc基础:OCC.Core.TopAbs 类简介
    在PythonOCC库中,OCC.Core.TopAbs模块定义了一系列枚举类型,这些枚举类型代表了拓扑形状的不同类别(Topology)。这些类别是构建和操作三维几何模型的基础,特别是在处理布尔运算、几何约束、参数化设计等复杂任务时。TopAbs类提供了统一的接口来识别和区分不同的拓扑元素,是OpenCASCAD......
  • python-数据分析-Matplotlib-1-基础图形(曲线图-散点-柱状-堆叠柱状-饼状图-直方图)
    曲线图#-*-coding:utf-8-*-#基础、曲线图importnumpyimportmatplotlib.pyplotasplt#设置字体SimHei:黑体#需要注意的是,使用中文字体后坐标轴上的负号将会无法显示,需要将`axes.unicode_minus`参数设置为`False`,这样才能让坐标轴上的负号正常显示plt.rcParams['f......
  • python-数字反转 ll
    [问题描述]:现在给出一个正整数n,请将n倒序输出(末尾是0也输出)输入:一行一个正整数n输出:一行一个正整数,表示数字n倒过来输出的结果样例输入112345678910111213样例输出131211101987654321提示1<=n<=10^5000来源/分类(难度系数:一星) 完整代码如下:a=list(input())a......
  • python - pip安装三方库超时、安装慢解决办法
    前言:WARNING:Retrying(Retry(total=4,connect=None,read=None,redirect=None,status=None))afterconnectionbrokenby'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org',port=443):今天在一台新的电脑上时候pip下载requests库,报错这个链接超时的错误。我们直......
  • Python 详述 Python 中的 property 语法
    在大多数语言的程序中,一个类,每有一个属性,就会对应setter和getter,基本都是标配。示例:classMoney(object):def__init__(self):self.__money=0defgetMoney(self):returnself.__moneydefsetMoney(self,value):ifisinsta......
  • python通过COM接口调用CANoe工具实现相关操作
    使用Python来操作CANoe(一个用于汽车总线系统设计、分析、仿真和测试的强大工具),你可以借助win32com库来实现。这涉及到使用COM接口来控制CANoe。以下是一个示例,演示了如何使用Python通过win32com库来操作CANoe。一、前提条件安装Python和win32com库:确保你已经安装了Python......
  • [数据分析与可视化] 基于Python绘制简单动图
    动画是一种高效的可视化工具,能够提升用户的吸引力和视觉体验,有助于以富有意义的方式呈现数据可视化。本文的主要介绍在Python中两种简单制作动图的方法。其中一种方法是使用matplotlib的Animations模块绘制动图,另一种方法是基于Pillow生成GIF动图。python学习资料已打包好,需......
  • 程序猿大战Python——容器——列表的基本使用
    列表的定义==目标:==掌握如何定义列表。列表类型为list,是Python中的一种常见类型。列表可以存放各种数据类型的数据,且列表的长度会随着添加数据的变化而变化。列表语法:变量名=[元素1,元素2,元素3,...]说明:列表的多个元素之间使用,逗号分隔。例如,一起来完成:(1)定义......