我想绘制一个非常规的2D离散矩形网格 x轴值,例如CFD中使用的典型离散网格。 代码的示例可以是:
fig = plt.figure(1,figsize=(12,8))
axes = fig.add_subplot(111)
matplotlib.rcParams.update({'font.size':17})
axes.set_xticks(self.xPoints)
axes.set_yticks(self.yPoints)
plt.grid(color='black', linestyle='-', linewidth=1)
myName = "2D.jpg"
fig.savefig(myName)
其中self.xPoints和self.yPoints是一维非常规向量。
这段代码产生了良好的离散化网格,问题就在于此 xtics和ytics标签因为它们出现在xPoints和yPoints的所有值上(它们重叠)。 如何轻松重新定义轴中的打印值? 让我们说我只想显示x和y的最小值和最大值,而不是离散化网格中的所有值。 我不能发布一个示例图,因为这是我第一次在这里问一些东西(我可以通过邮件发送请求)
答案 0 :(得分:0)
问题是你在写下时明确告诉matplotlib标记每个点:
axes.set_xticks(self.xPoints)
axes.set_yticks(self.yPoints)
注释掉这些行,看看结果如何。
当然,如果您只想标记第一个和最后一个点,它就会变为:
axes.set_xticks([self.xPoints[0], self.xPoints[-1]])
...
答案 1 :(得分:0)
如果网格线由axes.set_xticks()
指定,我认为在您的情况下不会显示没有重叠的刻度线。
我可能有一个解决方案:
...
ax = plt.gca()
#Arr_y: y-direction data, 1D numpy array or list.
for j in range(len(Arr_y)):
plt.hline(y = Arr_y[j], xmin = Arr_x.min(), xmax = Arr_x.max(), color = 'black')
#Arr_x: x-direction data, 1D numpy array or list.
for i in range(len(Arr_x)):
plt.vline(x = Arr_x[i], ymin = Arr_y.min(), ymax = Arr_y.max(), color = 'black')
#Custom your ticks here, 1D numpy array or list.
ax.set_xticks(Arr_xticks)
ax.set_yticks(Arr_yticks)
plt.xlim(Arr_x.min(), Arr_x.max())
plt.ylim(Arr_y.min(), Arr_y.max())
plt.show()
...
hlines
和vlines
是水平线和垂直线,您可以在x和y方向指定那些带有边界数据的线。
我尝试使用60×182非均匀网格,花了我1.2s,希望我能在这里发布一张图片。