相关疑难解决方法(0)

图像的像素之间的平滑c\imshow在matlab中像matplotlib imshow

当我imshow()在python中使用matplotlib 来表示一个小矩阵时,如果在像素之间平滑,它会产生一些排序.有什么方法可以在Matlab中使用imshow或使用imagesc

例如,使用matplotlib,这是单位矩阵的输出imshow(eye(3)): 在此输入图像描述

在matlab中, imagesc(eye(3)):

在此输入图像描述

我能想到的解决方案是使用一些滤波器进行外推和平滑处理,但这与单个像素级别无关.我也尝试了myaaexport_fig,但它们并不令人满意.Myaa在应用后可以使用所有GUI,因此我无法放大或缩小,并且export_fig让我将图形保存到文件然后对该文件进行操作,太麻烦了.那么,是否有一种方法可以告诉matlab的数字引擎(java或什么不是)进行平滑,同时保持图形GUI的良好可用性?

matlab plot matplotlib

15
推荐指数
1
解决办法
1万
查看次数

Matplotlib 存储的 .svg 与屏幕上显示的不同

这是一个例子。接下来是 get 存储为 .png 的内容,这就是它在屏幕上的显示方式,它是正确的

这是看起来正确的图像

接下来是 .svg,它对热图使用插值

在此输入图像描述

它们都分别使用下一行代码存储

plt.savefig(filename,format='png')
plt.savefig(filename,format='svg')
Run Code Online (Sandbox Code Playgroud)

接下来是生成实际绘图的代码

def heatmapText(data,xlabels=[],ylabels=[],cmap='jet',fontsize=7):
    '''
    Heatmap with text on each of the cells
    '''


    plt.imshow(data,interpolation='none',cmap=cmap)

    for y in range(data.shape[0]):
        for x in range(data.shape[1]):
            plt.text(x , y , '%.1f' % data[y, x],
                     horizontalalignment='center',
                     verticalalignment='center',
                     fontsize=fontsize
                     )

    plt.gca()
    if ylabels!=[]:
        plt.yticks(range(ylabels.size),ylabels.tolist(),rotation='horizontal')
    if xlabels!=[]:
        plt.xticks(range(xlabels.size),xlabels.tolist(),rotation='vertical')
Run Code Online (Sandbox Code Playgroud)

对于这两个图,我使用了完全相同的函数,但以不同的格式存储。最后,屏幕中显示正确(如 .png 中所示)。

关于如何让 .svg 正确存储文件有什么想法吗?

python svg matplotlib

4
推荐指数
1
解决办法
1073
查看次数

标签 统计

matplotlib ×2

matlab ×1

plot ×1

python ×1

svg ×1