我正在尝试使用matplotlib复制在gnu图中创建的一个绘图。gnuplot所使用的绘图类型(如下)称为伪三维绘图。

这表明,随着时间的推移,肽/蛋白质的每一个残基都有二级结构分配。所以,在每一个时间步骤(列),你看到的是单个肽的二级结构分配。对于每一个残余物(行),您将看到该残余物的二级结构分配随时间的变化。
我想将这种情节改编成matplotlib。在matplotlib中,什么是合适的地块来完成这个任务?
我能想到的最原始的解决方案就是简单地使用补丁在正确的坐标处绘制矩形,但我希望使用现有的matplotlib绘图类型,它更灵活,更适合自定义。
这些数据的结构如下:
data = [[x1, y1, z11], [x1, y2, z12], [x1, y3, z13], ..., [xn, ym, znm]]其中n是时间步长的总数,m是残差的总数。Z值是在xy坐标下二级结构赋值的分类数据。
当在三个时间步骤中有一个含有三个残基的肽时,您可以使用一些实际数据来测试这个过程:
data = [[1, 1, 0], [1, 2, 0], [1, 3, 0], [2, 1, 6], [2, 2, 6], [2, 3, 6], [3, 1, 6], [3, 2, 0], [3, 3, 0]]发布于 2018-07-24 17:37:35

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from matplotlib import colors
data = [[1, 1, 0], [1, 2, 2], [1, 3, 0], [2, 1, 6], [2, 2, 6], [2, 3, 6], [3, 1, 6], [3, 2, 0], [3, 3, 0]]
# format the data into an array, zero as default
x_max = max( u[0] for u in data ) + 1
y_max = max( u[1] for u in data ) + 1
z_max = max( u[2] for u in data ) + 1
z = np.zeros((x_max, y_max))
for u in data:
z[u[0], u[1]] = u[2]
# Define the x and y range:
x = range(x_max + 1)
y = range(y_max + 1)
# Colormap with discrete values and corresponding labels:
labels = ['random', 'helix', 'coil', 'pi', 'beta', 'turn', 'bridge']
cmap = colors.ListedColormap(['white', 'blue', 'green', 'magenta', 'orange', 'red', 'yellow'])
bounds = range(cmap.N+1)
norm = colors.BoundaryNorm(bounds, cmap.N)
plt.pcolor(x, y, z, cmap=cmap, norm=norm)
formatlabels = plt.FixedFormatter( labels )
plt.colorbar(cmap=cmap, norm=norm, boundaries=bounds, ticks=bounds,
format=formatlabels, drawedges=True);https://stackoverflow.com/questions/51494218
复制相似问题