Python 如何使xticklabel只显示数据列表中的点?
我正在创建一个python应用程序来显示数据列表的甘特图。但是当我运行应用程序时,我得到了这个-> 事实上,我需要的是Xticklabel应该是数据列表中与图中相同端点处的点。类似于此的内容->为糟糕的图片编辑感到抱歉 这就是我迄今为止所做的:Python 如何使xticklabel只显示数据列表中的点?,python,matplotlib,tkinter,Python,Matplotlib,Tkinter,我正在创建一个python应用程序来显示数据列表的甘特图。但是当我运行应用程序时,我得到了这个-> 事实上,我需要的是Xticklabel应该是数据列表中与图中相同端点处的点。类似于此的内容->为糟糕的图片编辑感到抱歉 这就是我迄今为止所做的: self.f = Figure(figsize=(10, 8), dpi=100) self.ax = self.f.add_subplot(2,1,2) ind = numpy.arange(1) # the x locations for the
self.f = Figure(figsize=(10, 8), dpi=100)
self.ax = self.f.add_subplot(2,1,2)
ind = numpy.arange(1) # the x locations for the groups
width = .95
data = [2,4,5,7,8,12,16]
patch_handles = []
left = 1
for i, d in enumerate(data):
patch_handles.append(self.ax.barh(ind, d, align='center', left=left, yerr=0.4, color='y'))
left += d
for j in range(len(patch_handles)):
for i, patch in enumerate(patch_handles[j].get_children()):
bl = patch.get_xy()
x = 0.5 * patch.get_width() + bl[0]
y = 0.5 * patch.get_height() + bl[1]
self.ax.text(x, y, "dd", ha='center')
self.ax.set_yticks(ind)
self.ax.set_yticklabels("G")
self.ax.set_xticklabels(data)
self.ax.set_xlabel('Scores')
canvas = FigureCanvasTkAgg(self.f, master=root)
canvas.show()
canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=1)
编辑:更改@scroopy noopers的答案代码后的屏幕截图
除了使用set_xticklabels设置记号位置处显示的值外,还可以使用set_xtick设置记号的位置:
self.ax.set_yticks(ind)
self.ax.set_yticklabels("G")
self.ax.set_xticks(numpy.cumsum(data)) # Set positions correctly
self.ax.set_xticklabels(data)
self.ax.set_xlabel('Scores')
答案来自于
编辑:正如OP在下面评论的那样,这导致了其特定绘图的一对一错位。他们能够通过简单的调整来修复错位:
self.ax.set_xticks(numpy.cumsum(data) + 1)
我得到了数据列表中的点,但它不在准确的点上。我将更新问题中的屏幕截图。我从他的代码中找到了答案:我只需要更新->self.ax.setxticksnumpy.cumsumdata+1书籍,就像你需要考虑最后一条粗体垂直线和封闭矩形边之间的间隙一样。好吧。即使没有垂直线,我也可以在图片问题的编辑部分的相同位置看到点“16”