X和Y使用Python中的matplotlib在4x4多重绘图上进行刻录

时间:2018-06-13 21:39:35

标签: python python-3.x matplotlib plot axis-labels

我在Anaconda安装中使用Python3.6.5。

我有16个包含两列数据的数据文件。我试图制作一个图表,显示一个4x4图中的所有数据。我已设法将所有绘图绘制在一个大的4x4图上,但无法调整X和Y刻度。 X值的范围为0到2000,Y值的范围为0到4.5。

这是我目前的剧本:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import math

ph_values = [1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5]

all_xs = []
all_ys = []
for ph in ph_values:
    xs = []
    ys = []
    with open('rmsd_ph' + str(ph) + '.dat', "r") as f:
        for line in f:
            if line[0] != "#":
               x,y = line.split()
               xs.append(float(x))
               ys.append(float(y))
    all_xs.append(xs)
    all_ys.append(ys)

fig, axes = plt.subplots(nrows=math.ceil(len(ph_values)/4), ncols=4, figsize=(6,6))

axes = axes.flatten()
for index,ph in enumerate(ph_values):
    axes[index].plot(np.asarray(all_xs[index]),np.asarray(all_ys[index]))

plt.xticks(np.arange(0, 2000, step=500))
plt.tight_layout()
plt.savefig('test.pdf')
plt.show()

目前脚本输出的内容如下所示。

enter image description here

如您所见,最后一幅图调整了X轴。我还没有尝试调整Y轴,因为我没有用y轴成功。

总的来说,我想在y轴和x轴上都有4个刻度。

2 个答案:

答案 0 :(得分:0)

如果我理解你想要让所有x轴相同,那么y轴也是如此,我建议尝试使用共享轴:

fig, axes = plt.subplots(4, 4, sharex=True, sharey=True, figsize=(6,6))

答案 1 :(得分:0)

这是我发现的,它回答了我遇到的问题。

fig, axes = plt.subplots(nrows=math.ceil(len(ph_values)/4), ncols=4, figsize=(9,9))

axes = axes.flatten()
for index,ph in enumerate(ph_values):
    axes[index].scatter(np.asarray(all_xs[index]),np.asarray(all_ys[index]), s=1)
    plt.sca(axes[index])  <------------------  Fixed Problem 
    plt.xticks([0, 500, 1000, 1500, 2000]) <-  Fixed Problem
    plt.yticks([0, 1, 2, 3, 4, 5]) <---------- Fixed Problem
    plt.title('pH:' + str(ph)) 
    if (index % 4 == 0):
        plt.ylabel('RMSD [$\\rm{\\AA}$]')
    if (index >= 12):
        plt.xlabel('Steps')


plt.tight_layout()
plt.savefig(output)
plt.show()

这是结果的图像。

Final Image