我在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轴绘制为字符串,因此会失去轴的连续性,这会使图表陷入混乱,因为数据点的间距不是等距的。
答案 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()