我有一个庞大的数据文本文件。我将这些数据绘制在CT图像上,结果可以在下图中看到。但是我怎样才能将我的剂量数据轴旋转到与我的CT图像相同的位置?
到目前为止我的代码:
%matplotlib notebook
import numpy as np
import dicom
import matplotlib.pyplot as plt
from itertools import islice
import matplotlib.colors as colors
import matplotlib.cm as cm
data = dicom.read_file("NEW.dcm")
plt.set_cmap("gray")
pixel_array = data.pixel_array
plt.pcolormesh(pixel_array)
plt.gca().set_aspect("equal")
plt.show()
CS=plt.contour(xi,yi,zi,cmap=plt.cm.jet)
import numpy as np
import matplotlib.pyplot as plt
a = np.loadtxt('New.txt')
i = a[:,1]
j = a[:,2]
energies = a[:,3]
xi = np.linspace(i.min(), i.max())
yi = np.linspace(j.min(), j.max())
zi = scipy.interpolate.griddata((i, j), energies, (xi[None,:], yi[:,None]), method='cubic')
fig = plt.figure()
CS=plt.contour(xi, yi, zi,colors='k', norm=plt.Normalize(vmax=abs(zi).max(), vmin=-abs(zi).max()))
CS = plt.contourf(xi,yi,zi,15,cmap=plt.cm.jet)
数据提取
30 1 2 0.00951305
30 1 3 0.0110269
30 1 4 0.0141366
30 1 5 0.00468656
30 1 6 0.0144487
30 1 7 0.0253241
30 1 8 0.0239877
30 1 9 0.0175475
30 1 10 0.0134009
…
(完整代码和可用数据here)
谢谢你。
答案 0 :(得分:1)
如果转置z
网格,则会轮换轮廓。最后两行将z
更改为z.T
:
CS=plt.contour(xi, yi, zi.T,colors='k', norm=plt.Normalize(vmax=abs(zi).max(), vmin=-abs(zi).max()))
CS = plt.contourf(xi, yi, zi.T,15,cmap=plt.cm.jet)
请记住,在图片X
中,轴是水平的,Y
是垂直的,但对于矩阵,第一维(X
)是垂直的,第二维(Y
)是水平的。