气泡图
# -*- 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