将字符串添加到整数的x轴

时间:2017-09-06 17:38:12

标签: python matplotlib plot

我在x轴上绘制图表(溶液浓度)与效率(y)的关系图。我有这个设置显示x在0到100之间,但我想添加另一个数据点作为控件,没有任何解决方案。我有问题,因为它并不适合浓度轴上的任何地方,但我喜欢在0之前或100之后添加它,可能会在轴上中断以将它们分开。所以我的x轴看起来像['控制',0,20,40,60,80,100]

MWE:

x_array = ['control', 0, 20, 40, 50, 100]
y_array = [1, 2, 3, 4, 5, 6]
plt.plot(x_array, y_array)

试试这个,我得到一个错误:

  

ValueError:无法将字符串转换为float:' control'

任何想法我怎么能做这样的工作?我看过xticks,但是这会将x轴绘制为字符串,因此会失去轴的连续性,这会使图表陷入混乱,因为数据点的间距不是等距的。

1 个答案:

答案 0 :(得分:3)

您可以将单个点添加到图表中,作为对plot的单独调用,然后调整x轴标签。

import matplotlib.pyplot as plt

x_array = [0, 20, 40, 50, 100]
y_array = [2, 3, 4, 5, 6]
x_con = -20
y_con = 1
x_ticks = [-20, 0, 20, 40, 60, 80, 100]
x_labels = ['control', 0, 20, 40, 60, 80, 100]

fig, ax = plt.subplots(1,1)
ax.plot(x_array, y_array)
ax.plot(x_con, y_con, 'ro')  # add a single red dot

# set tick positions, adjust label text
ax.xaxis.set_ticks(x_ticks)
ax.xaxis.set_ticklabels(x_labels)
ax.set_xlim(x_con-10, max(x_array)+3)
ax.set_ylim(0,7)
plt.show()

enter image description here