【发布时间】:2019-05-14 14:11:49
【问题描述】:
我制作了一个 violion 图,其中包含不同“eta”值的分布,即 0、0.1127、0.25、0.5、0.75、0.8873 和 1.0。当我现在绘制我的数据时,七个分布都彼此等距分布。我想改变它,使子图的位置对应于 x 轴上表示的数字。
我的代码如下:所有的 y 值都是一个一维数组,里面有一堆数字。
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.pyplot import figure
data0 = np.genfromtxt('Plots/Violin/lambda0.0.dat', skip_header=0)
y0 = data0[:,3]
x0 = np.full(len(y0),0)
data01 = np.genfromtxt('Plots/Violin/lambda0.1.dat', skip_header=0)
y01 = data01[:,3]
x01 = np.full(len(y01),0.1127)
data02 = np.genfromtxt('Plots/Violin/lambda0.25.dat', skip_header=0)
y02 = data02[:,3]
x02 = np.full(len(y02),0.25)
data03 = np.genfromtxt('Plots/Violin/lambda0.5.dat', skip_header=0)
y03 = data03[:,3]
x03 = np.full(len(y03),0.5)
data04 = np.genfromtxt('Plots/Violin/lambda0.75.dat', skip_header=0)
y04 = data04[:,3]
x04 = np.full(len(y04),0.75)
data05 = np.genfromtxt('Plots/Violin/lambda0.9.dat', skip_header=0)
y05 = data05[:,3]
x05 = np.full(len(y05),0.8873)
data06 = np.genfromtxt('Plots/Violin/lambda1.0.dat', skip_header=0)
y06 = data06[:,3]
x06 = np.full(len(y06),1.0)
y = np.concatenate((y0,y01,y02,y03,y04,y05,y06),axis=0)
x = np.concatenate((x0,x01,x02,x03,x04,x05,x06),axis=0)
figure(figsize=[20,10])
sns.set(style="whitegrid")
plt.ylim(top=20,bottom=10)
ax = sns.violinplot(x=x,y=y)
显然我没有足够的声誉来发布图片(这是我的第一篇文章)。但为了清楚起见,这里有一个指向当前情节的链接: https://imgur.com/hdHrWJ6
【问题讨论】:
-
也许您应该生成一个随机值数据集,以便每个人都可以运行您的代码,而不是从只有您拥有的 7 个不同文件中读取数据