【问题标题】:How can I change the x-location of my seaborn violion plot to correspond to their float values?如何更改我的 seaborn 小提琴图的 x 位置以对应它们的浮点值?
【发布时间】: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 个不同文件中读取数据

标签: python plot seaborn


【解决方案1】:

您的 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)

【讨论】:

    猜你喜欢
    • 2018-12-10
    • 2015-02-04
    • 2017-08-11
    • 2015-03-22
    • 2019-03-14
    • 2023-03-31
    • 2021-10-14
    • 2020-08-30
    • 2021-08-29
    相关资源
    最近更新 更多