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