python/matplotlib/seaborn- x 轴上带有数据点的箱线图
python/matplotlib/seaborn- boxplot on an x axis with data points
我的数据集是这样的:一个python列表,有6个数字[23948.30, 23946.20, 23961.20, 23971.70, 23956.30, 23987.30]
我希望它们是 x 轴上方的水平箱形图,其中 [23855 和 24472] 作为 x 轴的限制(没有 y 轴)。
x 轴也将包含数据中的点。
(所以箱线图和x轴的比例相同)
我也想要箱线图显示图片中的平均数。
现在我只能得到水平箱线图。
(而且我还希望 x 轴显示整数而不是 xx+2.394e)
这是我的代码:
`
def box_plot(circ_list, wear_limit):
print circ_list
print wear_limit
fig1 = plt.figure()
plt.boxplot(circ_list, 0, 'rs', 0)
plt.show()
`
我正在尝试的 Seaborn 代码:
def box_plot(circ_list, wear_limit):
print circ_list
print wear_limit
#fig1 = plt.figure()
#plt.boxplot(circ_list, 0, 'rs', 0)
#plt.show()
fig2 = plt.figure()
sns.set(style="ticks")
x = circ_list
y = []
for i in range(0, len(circ_list)):
y.append(0)
f, (ax_box, ax_line) = plt.subplots(2, sharex=True,
gridspec_kw={"height_ratios": (.15, .85)})
sns.boxplot(x, ax=ax_box)
sns.pointplot(x, ax=ax_line, ay=y)
ax_box.set(yticks=[])
ax_line.set(yticks=[])
sns.despine(ax=ax_line)
sns.despine(ax=ax_box, left=True)
cur_axes = plt.gca()
cur_axes.axes.get_yaxis().set_visible(False)
sns.plt.show()
我也在另一个 post 中回答了这个问题,但为了以防万一,我将其粘贴在这里。我还添加了一些我认为可能更接近您想要实现的目标。
l = [23948.30, 23946.20, 23961.20, 23971.70, 23956.30, 23987.30]
def box_plot(circ_list):
fig, ax = plt.subplots()
plt.boxplot(circ_list, 0, 'rs', 0, showmeans=True)
plt.ylim((0.28, 1.5))
ax.set_yticks([])
labels = ["{}".format(int(i)) for i in ax.get_xticks()]
ax.set_xticklabels(labels)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['left'].set_color('none')
ax.spines['bottom'].set_position('center')
ax.spines['bottom'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
plt.show()
box_plot(l)
结果:
请告诉我它是否符合您的要求。
我的数据集是这样的:一个python列表,有6个数字[23948.30, 23946.20, 23961.20, 23971.70, 23956.30, 23987.30]
我希望它们是 x 轴上方的水平箱形图,其中 [23855 和 24472] 作为 x 轴的限制(没有 y 轴)。
x 轴也将包含数据中的点。
(所以箱线图和x轴的比例相同)
我也想要箱线图显示图片中的平均数。
现在我只能得到水平箱线图。 (而且我还希望 x 轴显示整数而不是 xx+2.394e)
这是我的代码:
`
def box_plot(circ_list, wear_limit):
print circ_list
print wear_limit
fig1 = plt.figure()
plt.boxplot(circ_list, 0, 'rs', 0)
plt.show()
`
我正在尝试的 Seaborn 代码:
def box_plot(circ_list, wear_limit):
print circ_list
print wear_limit
#fig1 = plt.figure()
#plt.boxplot(circ_list, 0, 'rs', 0)
#plt.show()
fig2 = plt.figure()
sns.set(style="ticks")
x = circ_list
y = []
for i in range(0, len(circ_list)):
y.append(0)
f, (ax_box, ax_line) = plt.subplots(2, sharex=True,
gridspec_kw={"height_ratios": (.15, .85)})
sns.boxplot(x, ax=ax_box)
sns.pointplot(x, ax=ax_line, ay=y)
ax_box.set(yticks=[])
ax_line.set(yticks=[])
sns.despine(ax=ax_line)
sns.despine(ax=ax_box, left=True)
cur_axes = plt.gca()
cur_axes.axes.get_yaxis().set_visible(False)
sns.plt.show()
我也在另一个 post 中回答了这个问题,但为了以防万一,我将其粘贴在这里。我还添加了一些我认为可能更接近您想要实现的目标。
l = [23948.30, 23946.20, 23961.20, 23971.70, 23956.30, 23987.30]
def box_plot(circ_list):
fig, ax = plt.subplots()
plt.boxplot(circ_list, 0, 'rs', 0, showmeans=True)
plt.ylim((0.28, 1.5))
ax.set_yticks([])
labels = ["{}".format(int(i)) for i in ax.get_xticks()]
ax.set_xticklabels(labels)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['left'].set_color('none')
ax.spines['bottom'].set_position('center')
ax.spines['bottom'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
plt.show()
box_plot(l)
结果:
请告诉我它是否符合您的要求。