python - 在循环中绘制子图

标签 python matplotlib subplot

z = {'A': [0.3618426, 0.36146951], 'B': [1.8908799, 1.904695], 'C': [2.1813462e+08, 2.1833622e+08], 'D': [0.89925492, 0.89953589], 'E': [2.6356747, 2.6317911], 'F': [2.2250445e+08, 2.2501808e+08], 'G': [2.0806053e+08, 2.0691238e+08], 'H': [0.37242803, 0.37611806]}
k = [1,2]

for key in z:
plt.subplot(4,4,1)
plt.plot(k,[z[key][0],z[key][1]], 'ro-')
plt.show()
我会尽量说清楚。 z 是一本大小不一的字典。我想做的是绘制字典数量,比如 4 列,但行应该根据生成的图数量增加,例如,如果有 16 个要绘制的键,我应该最终得到 4 行 4 列的数字。如何我可以这样做吗?

最佳答案

绘制多个图形的基本形式是以下方法 作为前提,您只需要决定列数。 cols=3剩下的循环过程由字典数完成。

import matplotlib.pyplot as plt
import pandas as pd
import math

z = {'A': [0.3618426, 0.36146951], 'B': [1.8908799, 1.904695], 'C': [2.1813462e+08, 2.1833622e+08], 'D': [0.89925492, 0.89953589], 'E': [2.6356747, 2.6317911], 'F': [2.2250445e+08, 2.2501808e+08], 'G': [2.0806053e+08, 2.0691238e+08], 'H': [0.37242803, 0.37611806]}
k = [1,2]

cols = 3
rows = math.ceil(len(z) / cols)

fig, axes = plt.subplots(rows, cols, figsize=(16,12))

dict_keys = [k for k in z.keys()]

l = 0
for i in range(rows):
    for j in range(cols):
        if len(z) == l:
            break
        else:
            key = dict_keys[i+j]
            axes[i][j].plot(k, [z[key][0],z[key][1]], 'ro-')
        l += 1

plt.show()
enter image description here

关于python - 在循环中绘制子图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62972488/

相关文章:

python - 如何从列表python中的多个字典中删除键

python - Matplotlib 多边形补丁不使用 pandas df 中的 xy 列表进行绘制

python - 使用函数绘制 matplotlib 子图

python - 如何更改现有轴的 matplotlib 子图投影?

python - 如何更改子图刻度标签的旋转

python - 在 Pygame 中绘制箭头

python - 如何以及在哪里部署 Flask + React Web 应用程序?

python - 从 tzdata 中提取历史闰秒

python - 如何在 matplotlib 的 map 中插入比例尺

python - Seaborn Striplot 数据可视化未将颜色应用于标记/条/条