gpt4 book ai didi

python - 第二个 y 轴和垂直线

转载 作者:行者123 更新时间:2023-12-01 08:51:21 25 4
gpt4 key购买 nike

我正在使用以下代码创建 fiddle 图:

import seaborn as sns

ax = sns.violinplot(data=df[['SoundProduction','SoundForecast','diff']])
ax.set_ylabel("Sound power level [dB(A)]")

它给了我以下结果:

violinplot

有什么方法可以在第二个 y 轴上绘制 diff 以便所有三个系列都清晰可见吗?

另外,有没有办法在两个系列之间绘制一条垂直线?在本例中,当 SoundForecastdiff 绘制在两个不同的轴上时,我希望在它们之间有一条垂直线。

最佳答案

您可以使用多个子图来实现此目的,这些子图可以使用 plt.subplots 轻松设置。 (查看更多 subplot examples )。

这允许您以适当的比例显示分布,并且不会“浪费”显示空间。大多数(全部?)seaborn 的绘图函数都接受 ax= 参数,因此您可以设置渲染绘图的轴。轴之间也有明显的分隔。

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# generate some random distribution data
n = 800 # samples
prod = 95 + 5 * np.random.beta(0.6, 0.5, size=n); # a bimodal distribution
forecast = prod + 3*np.random.randn(n) # forecast is noisy estimate around the "true" production
diff = prod-forecast # should be with mu 0 sigma 3
df = pd.DataFrame(np.array([prod, forecast, diff]).T, columns=['SoundProduction','SoundForecast','diff']);

# set up two subplots, with one wider than the other
fig, ax = plt.subplots(1,2, num=1, gridspec_kw={'width_ratios':[2,1]})

# plot violin distribution estimates separately so the y-scaling makes sense in each group
sns.violinplot(data=df[['SoundProduction','SoundForecast']], ax=ax[0])
sns.violinplot(data=df[['diff']], ax=ax[1])

enter image description here

关于python - 第二个 y 轴和垂直线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53098590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com