Python 画 L-shape 区域的热图

from matplotlib import pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np
x1 = np.arange(-1, 0, 0.01)
x2 = np.arange(-1, 1, 0.01)
x3 = np.arange(0, 1, 0.01)

xs1, ys1 = np.
### 如何使用 Python 绘制环形 环形是一种特殊的可视化形式,它将传统的二维矩阵数据映射到极坐标系下,形成一种圆形布局的。这种表可以更直观地展示周期性或循环性的数据模式。 以下是基于 `matplotlib` 和 `seaborn` 的实现方法: #### 使用 Matplotlib 实现环形 通过将传统的数据转换为极坐标下的绘方式来创建环形。以下是一个完整的代码示例[^1]: ```python import numpy as np import matplotlib.pyplot as plt # 创建模拟数据 data = np.random.rand(10, 12) # 转换为极坐标参数 theta = np.linspace(0, 2 * np.pi, data.shape[1], endpoint=False) # 圆周角度 radii = np.arange(data.shape[0]) + 1 # 半径范围 fig, ax = plt.subplots(subplot_kw={'projection': 'polar'}) cmap = plt.cm.magma # 颜色映射方案 for i, radius in enumerate(radii): widths = theta[1] - theta[0] # 扇区宽度 colors = cmap((data[i] - data.min()) / (data.max() - data.min())) # 归一化颜色 bars = ax.bar(theta, [radius]*len(theta), width=widths, bottom=radius-1, color=colors) ax.set_title('Ring Heatmap Example', va='bottom') plt.show() ``` 此代码的核心在于利用 `matplotlib` 的极坐标投影功能 (`subplot_kw={'projection': 'polar'}`),并通过调整半径和扇区的角度分布构建环形结构。 --- #### 使用 Seaborn 结合 Polar Projection Seaborn 并未直接提供绘制环形的功能,但可以通过其强大的配色能力和数据处理能力辅助完成任务。下面是一段结合 `seaborn` 和 `matplotlib` 极坐标的例子[^2]: ```python import pandas as pd import seaborn as sns import numpy as np import matplotlib.pyplot as plt # 模拟数据集 df = pd.DataFrame(np.random.randn(10, 12)) df.columns = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] # 数据预处理 theta = np.linspace(0, 2 * np.pi, df.shape[1], endpoint=False) r_max = df.index.size cmap = plt.get_cmap("coolwarm") fig, ax = plt.subplots(figsize=(8, 8), subplot_kw=dict(projection='polar')) bars = [] for r_idx, row_data in enumerate(df.values): bar_theta = theta.copy() radii = [r_idx + 0.5] * len(bar_theta) width = (2 * np.pi) / len(row_data) normalized_colors = [(val - df.values.min()) / (df.values.max() - df.values.min()) for val in row_data] colors = [cmap(color_val) for color_val in normalized_colors] rects = ax.bar( bar_theta, height=1, width=width, bottom=r_idx, color=colors, edgecolor='w' ) bars.append(rects) ax.set_yticks(range(len(df))) ax.set_xticks(theta) ax.set_xticklabels(df.columns) ax.set_title('Circular Heatmap with Seaborn and Matplotlib') plt.show() ``` 这段代码展示了如何将 `seaborn` 的调色板与 `matplotlib` 的极坐标系统结合起来,从而生成更加美观的环形--- ### 注意事项 1. **性能优化**: 如果数据量较大,则需注意渲染效率问题,可能需要降低分辨率或简化形细节。 2. **颜色映射选择**: 不同的颜色映射会影响视觉效果,建议根据实际需求选用合适的 colormap。 3. **标签清晰度**: 对于复杂的环形,应合理设置刻度标签的位置和旋转角度以提高可读性。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值