Как я могу изменить x-местоположение моего участка нарушителя морского происхождения, чтобы соответствовать их значениям с плавающей точкой? - PullRequest
1 голос
/ 14 мая 2019

Я сделал график с нарушением для разных значений «эта», а именно 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

1 Ответ

0 голосов
/ 17 мая 2019

Ваша ось x читается как строки.Преобразуйте их в тип «float», и все будет в порядке.

Это должно работать:

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),float(0))
data01 = np.genfromtxt('Plots/Violin/lambda0.1.dat', skip_header=0)
y01 = data01[:,3]
x01 = np.full(len(y01),float(0.1127))
data02 = np.genfromtxt('Plots/Violin/lambda0.25.dat', skip_header=0)
y02 = data02[:,3]
x02 = np.full(len(y02),float(0.25))
data03 = np.genfromtxt('Plots/Violin/lambda0.5.dat', skip_header=0)
y03 = data03[:,3]
x03 = np.full(len(y03),float(0.5))
data04 = np.genfromtxt('Plots/Violin/lambda0.75.dat', skip_header=0)
y04 = data04[:,3]
x04 = np.full(len(y04),float(0.75))
data05 = np.genfromtxt('Plots/Violin/lambda0.9.dat', skip_header=0)
y05 = data05[:,3]
x05 = np.full(len(y05),float(0.8873))
data06 = np.genfromtxt('Plots/Violin/lambda1.0.dat', skip_header=0)
y06 = data06[:,3]
x06 = np.full(len(y06),float(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)
...