为什么当保存为 .svg 而不是 .png 时,图中会出现不需要的线条

问题描述 投票:0回答:1
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import os
from matplotlib.ticker import FuncFormatter

# Assuming dataset is already defined
dataset2 = #redacted 

# Set up the figure
plt.figure(figsize=(8, 6))

# Plot the histogram with weights for relative frequencies
weights2 = np.ones_like(dataset2['Angle']) / len(dataset2['Area'])
plt.hist(dataset2['Angle'], bins=15, weights=weights2, color='Black', linewidth=2, label='Virtual')

# Set labels and title with larger font size
plt.xlabel("In-plane ($x_1$-$x_2$) angle range (°)", fontsize=14)

plt.ylabel("Probability", fontsize=14)

# Set x-axis limit
plt.xlim(-90, 90)

# Increase the size of tick labels
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)

# Convert y-axis ticks to percentages for the second plot
plt.gca().yaxis.set_major_formatter(FuncFormatter(lambda y, _: '{:.0%}'.format(y)))

# Add text box in the upper-right corner
a_11_value = 0.58
text_box_content = f'$a_{{11}} = {a_11_value:.2f}$'

plt.text(0.95, 0.95, text_box_content, transform=plt.gca().transAxes,
         verticalalignment='top', horizontalalignment='right', fontsize=16,
         bbox=dict(facecolor='white', alpha=0.8, edgecolor='black'))

# Specify the folder to save the plots
save_folder = r'savelink 

# Save the combined plot as an SVG and PNG file
plt.savefig(os.path.join(save_folder, 'angledistribution_plots.svg'))
plt.savefig(os.path.join(save_folder, 'angledistribution_plots.png'), dpi=00)


# Show the plot
plt.show()

当我另存为 svg 文件时,直方图上出现不需要的白线,但这不是 png 的问题吗?

我希望 .svg 和 .png 文件看起来一样,不应该有像分割直方图箱的线那样的渐变,但是,它们没有。

weirdlines in.svg file`

python pandas matplotlib
1个回答
0
投票

至于为什么在 SVG 中看到线条而在 PNG 中看不到线条,这与 PNG 是光栅图形而 SVG 是矢量图形有关。如您所知,SVG 图像是使用文件内的数据进行数学计算的,是图形的“精确”表示,而 PNG 是其光栅化,可以被认为是使用 2D 数组的精确表示的近似值离散像素。 PNG 和 SVG 可能会有非常微小的差异,具体取决于用于生成它们的后端,更重要的是您使用哪个程序来查看它们。例如,如果我打开您发布的图像并缩小得足够大,几乎所有线条对我来说都完全消失了。检查在最终目的地(在 PowerPoint、网站等)使用 SVG 时是否存在线条。否则,请尝试将

linewidth
设置为 0。

© www.soinside.com 2019 - 2024. All rights reserved.