【问题标题】:How can I make a transparent background?如何制作透明背景?
【发布时间】:2023-03-23 07:38:01
【问题描述】:

我有一个 .csv 文件,其中包含一些数据,其中 x、y、x1、y1 是坐标点,p 是值。我下面的代码非常适合绘图,但是当我绘制数据时,我得到了像紫色这样的背景颜色。我不希望背景中有任何颜色。我希望背景是透明的。我的最终目标是将这个结果覆盖在图像上。我是 Python 新手。任何帮助将不胜感激。

.csv 文件的下载链接herelink-2link-3

我的结果低于

我的代码

import matplotlib.pyplot as plt
from scipy import ndimage
import numpy as np
import pandas as pd
from skimage import transform
from PIL import Image
import cv2

x_dim=1200
y_dim=1200

# Read CSV 
df = pd.read_csv("flower_feature.csv")

# Create numpy array of zeros os same size
array = np.zeros((x_dim, y_dim), dtype=np.uint8)

for index, row in df.iterrows():
    x = np.int(row["x"])
    y = np.int(row["y"])
    x1 = np.int(row["x1"])
    y1 = np.int(row["y1"])
    p = row["p"]
    array[x:x1,y:y1] = p

map = ndimage.filters.gaussian_filter(array, sigma=16)
plt.imshow(map)
plt.show()

根据 Ghassen 的建议,我得到了低于结果的结果。我仍然没有得到透明背景。

当 Alpha =0 时

当 alpha =0.5

当 alpha =1 时

【问题讨论】:

    标签: python-3.x numpy-ndarray alpha-transparency


    【解决方案1】:

    我通过屏蔽值 ==0 的值解决了这个问题。代码将是

    from mpl_toolkits.axes_grid1 import make_axes_locatable

    masked_data = np.ma.masked_where(map == 0, map)

    【讨论】:

      【解决方案2】:

      试试这段代码:

      import matplotlib.pyplot as plt
      from scipy import ndimage
      import numpy as np
      import pandas as pd
      
      
      x_dim=1200
      y_dim=1200
      
      # Read CSV 
      df = pd.read_csv("/home/rosafi/Downloads/flower_feature.csv")
      
      # Create numpy array of zeros os same size
      array = np.ones((x_dim, y_dim), dtype=np.uint8)
      
      for index, row in df.iterrows():
          x = np.int(row["x"])
          y = np.int(row["y"])
          x1 = np.int(row["x1"])
          y1 = np.int(row["y1"])
          p = row["p"]
          array[x:x1,y:y1] = p
      
      map = ndimage.filters.gaussian_filter(array, sigma=16)
      map = np.ma.masked_where(map == 0, map)
      plt.imshow(map)
      plt.show()
      

      输出:

      【讨论】:

      • 是的,我也试过这种方式。当 alpha = 0 时,我什么也得不到。我将 alpha 的值更改为 0.5 或最高 1。当我覆盖该图像时,我没有得到图像的背景。
      • 当您将 alpha 设置为 0 时,背景会与数据曲线完全一致吗?我无法下载 csv 文件,但我使用 0 测试 alpha,没有背景,使用 1 时,它与您的图像相同
      • 我已经更新了 alpha=0、0.5 和 1 时的结果。请检查我编辑的问题。我还更新了 .csv 文件下载链接。感谢您的帮助。
      • 我觉得我们应该在这个stage map = ndimage.filters.gaussian_filter(array, sigma=16) 中的高斯滤波器应用中找到如何让背景透明
      • @Js541 试试这个链接:stackoverflow.com/questions/2578752/…
      猜你喜欢
      • 2011-06-15
      • 2020-03-18
      • 1970-01-01
      • 2022-08-02
      • 2011-03-14
      • 1970-01-01
      • 2018-10-13
      • 2013-09-06
      相关资源
      最近更新 更多