python数据分析及可视化(十一)Matplotlib布局配置(雷达图、Figure容器、子图对象、Axis容器、多图布局、3D绘制)

本文围绕Matplotlib展开,介绍了雷达图、Figure容器、子图对象、Axis容器及3D立体图形的绘制方法。如用plt.polar绘制雷达图,通过add_subplot等添加子图。还给出四个练习,涉及定价与销量关系、电影票房对比、班级身高分布及子图布局,帮助掌握绘图应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

雷达图

雷达图(Radar Chart)又被叫做蜘蛛网图,适用于显示三个或更多的维度的变量的强弱情况。比如某个企业在哪些业务方面的投入等,都可以用雷达图方便的表示。
在matplotlib.pyplot中,可以通过plt.polar来绘制雷达图,这个方法的参数跟plt.plot非常的类似,只不过是x轴的坐标点应该为弧度(2*PI=360°)。
注意:
● 因为polar并不会完成线条的闭合绘制,所以我们在绘制的时候需要在theta中和values中在最后多重复添加第0个位置的值,然后在绘制的时候就可以和第1个点进行闭合了,保证起点和终点是同一个位置。
● polar只是绘制线条,所以如果想要把里面进行颜色填充,那么需要调用fill函数来实现。
● polar默认的圆圈的坐标是角度,如果我们想要改成文字显示,那么可以通过xticks来设置。
在这里插入图片描述

Figure容器

绘图的时候要先有画板,再有画纸,才能把x和y轴的数据写入进行绘制图形。画板确定后,画纸可以铺满画板,也可以只占画纸的一部分。
在这里插入图片描述

子图对象

Axes介绍

Axes容器是用来创建具体的图形的。比如画曲线,柱状图,都是画在上面。所以之前我们学的使用plt.xx绘制各种图形(比如条形图,直方图,散点图等)都是对Axes的封装。
在一张画布上绘制两个图表,如左边绘制山水画,右边绘制油画。通过add_subplot向画布中添加对象,221指的是2行2列中的第1个图形,就好比把画布分为2行2列的4个区域,在第1个区域增加画纸。
在这里插入图片描述
add_axes向画布中添加对象,0,0表示添加对象的位置点为原点,1,1指的是图形为原图比例长度大小,好比多张纸大小不一样的纸叠加到一起,如果圆点坐标一致,大小一致的话图表会进行重叠。
在这里插入图片描述

在这里插入图片描述
可以通过set_xlim/set_ylim来设置x轴和y轴的最大值和最小值。
在这里插入图片描述
降水量和气温共用的图表中可以看到,如柱子代表降水量,折现表示温度变化,x轴代表的是月份,可以克隆x轴对象,在一个图表中绘制两个子图,y轴的刻度范围不一致,
在这里插入图片描述

绘制双y轴

在这里插入图片描述
在这里插入图片描述

添加

画板容器相应的方法,创建多图的子图布局的时候,在一个画板中添加子图对象的时候,建议两种方法不混用,传入参数不一样,标准不一样,得到的图表也不一样。
在这里插入图片描述

操作和删除

判断操作的哪个子图,可以进行操作和删除。
在这里插入图片描述

获取

如果有很多子图,标题、刻度、网格布局等一致的内容,都可以进行循环遍历获取获取每一个子对象,进行批量操作。
在这里插入图片描述

Axis 容器

坐标轴容器,Axis代表的是x轴或者y轴的对象。包含Tick(刻度)对象,TickLabel刻度文本对象,以及AxisLabel坐标轴文本对象。axis对象有一些方法可以操作刻度和文本等。

标签位置设置

rotation设置标签旋转的角度,默认是90度
在这里插入图片描述

刻度格式设置

在这里插入图片描述
在这里插入图片描述

多图布局

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3D立体图形

在pycham中,默认使用自带的工具显示图表,是个二维静态的图表,能显示数据,无法看到3D的效果,可以在Setting -->Tools—>Python Scientific,去掉 Show plots in tool window 前面的勾,再运行代码打开的3D图形可以移动和旋转。
在这里插入图片描述
在这里插入图片描述

练习1

为了对某一产品进行合理定价,我们对此类商品进行了试销实验,价格与需求量数据如下。利用图表分析规律。

价格	60	80	40	30	70	90	95
需求量	100	50	120	135	65	45	40

price = [60,80,40,30,70,90,95]
sales = [100,50,120,135,65,45,40]

此题是关于定价与销量的关系,可以把价格定为x轴,需求量定为y轴,分析二者之间的规律,一般要绘制散点图,看一下y随着x的变化的产生的趋势。
在这里插入图片描述

练习2

电影数据如下:

movies_name = ["变身特工","美丽人生","鲨海逃生","熊出没·狂野大陆"] 
day_12 = [2358,399,2358,362] 
day_13 = [12357,156,2045,168] 
day_14 = [15746,312,4497,319]

需求:直观体现出不同电影近三天的票房的对比情况;绘制图形如下
在这里插入图片描述
此题中有标签,包含电影名称和每个电影名称的索引,3天的电影票房数据。设置图表大小的比例,设置柱子的宽度,从3天的数据中遍历出每一部电影票房,每部电影的数据按照柱子的宽度依次排列,这时基本的图表已经实现,下面要做的就是加上数字标签,可以用annotate(),也可以用text(),指定坐标,把字符串放在坐标位置,可以定义添加数字的函数,每个电影去引用函数就可以了
把图例、网格线、标签、网格背景的设置都放在最后,便于排查问题。
在这里插入图片描述
在这里插入图片描述

练习3

绘制班级的身高分布图形
height = [160,163,175,180,176,177,168,189,188,177,174,170,173,181]

关于分布的图形有:散点图可以看到数据的分布和分散情况;直方图可以看到x轴连续的区间范围内,哪个区间的数值最多;箱线图主要是看一组或多组数据的分散程度,是靠近上边缘还是下边缘,可以帮助看到数据的异常值和离群点,都能直观的看到数据的分布。
在这里插入图片描述
在这里插入图片描述

练习4

实现以下子图布局:
在这里插入图片描述
创建画布在上面布局2*2,四个图形区域,对每个区域的图形进行分布绘制。
在这里插入图片描述

好的,下面是一个简单的例,展示如何使用Python中的一些常用数据可视化库画出雷达、柱状、词云和饼,并创建数据可视化大屏: 1. 雷达 ```python import matplotlib.pyplot as plt import numpy as np # 创建数据 categories = ['A', 'B', 'C', 'D', 'E'] values = [5, 3, 4, 2, 6] # 计算角度 angles = np.linspace(0, 2*np.pi, len(categories), endpoint=False) # 闭合形 values = np.concatenate((values, [values[0]])) angles = np.concatenate((angles, [angles[0]])) # 创建雷达 fig = plt.figure() ax = fig.add_subplot(111, polar=True) ax.plot(angles, values, 'o-', linewidth=2) ax.fill(angles, values, alpha=0.25) ax.set_thetagrids(angles * 180/np.pi, categories) ax.grid(True) # 显示像 plt.show() ``` 2. 柱状 ```python import matplotlib.pyplot as plt # 创建数据 x = ['A', 'B', 'C', 'D', 'E'] y = [5, 3, 4, 2, 6] # 创建柱状 fig, ax = plt.subplots() ax.bar(x, y) # 添加标签和标题 ax.set_xlabel('Categories') ax.set_ylabel('Values') ax.set_title('Example Bar Chart') # 显示像 plt.show() ``` 3. 词云 ```python from wordcloud import WordCloud import matplotlib.pyplot as plt # 创建词云 text = "Hello World! This is an example text for wordcloud." wordcloud = WordCloud().generate(text) # 显示词云 plt.imshow(wordcloud, interpolation='bilinear') plt.axis("off") plt.show() ``` 4. 饼 ```python import matplotlib.pyplot as plt # 创建数据 labels = ['A', 'B', 'C', 'D', 'E'] sizes = [5, 3, 4, 2, 6] # 创建饼 fig, ax = plt.subplots() ax.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90) # 添加标题 ax.set_title('Example Pie Chart') # 显示像 plt.show() ``` 5. 创建数据可视化大屏 一般来说,创建数据可视化大屏需要用到前端技术和可视化库,比如D3.js、Echarts等。这里提供一个简单的Python库dash,可以用Python代码创建交互式的数据可视化大屏。 ```python import dash import dash_core_components as dcc import dash_html_components as html # 创建app app = dash.Dash() # 创建布局 app.layout = html.Div(children=[ html.H1(children='Hello Dash'), html.Div(children=''' Dash: A web application framework for Python. '''), dcc.Graph( id='example-graph', figure={ 'data': [ {'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'Category 1'}, {'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': 'Category 2'}, ], 'layout': { 'title': 'Example Dash Plot' } } ) ]) # 启动app if __name__ == '__main__': app.run_server(debug=True) ``` 上面的代码创建了一个简单的Dash应用,包括一个标题、一个段落和一个柱状。你可以根据需要修改这个例,添加更的组件和布局,创建你需要的数据可视化大屏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值