bia*_*tor 5 python django matlab matplotlib
有人知道是否可以在matplotlib中包装xtick标签?现在我已经得到了以下代码(有点乱 - 已经黑了一段时间了):
def plotResults(request, question_id):
responses = ResponseOption.objects.filter(question__id=question_id).order_by('order').annotate(response_num=Count('response'))
counts = []
labels = []
for response in responses:
counts.append(response.response_num)
labels.append(smart_truncate('$'+response.text+'$'))
N = len(labels)
labels = tuple(labels)
counts = tuple(counts)
ind = na.array(range(N))+0.5
width = .35
fig = Figure(facecolor='white',edgecolor='white')
ax = fig.add_subplot(1,1,1)
rects1 = ax.bar(ind, counts,linewidth=0)
ax.set_ylabel('$Count$')
ax.set_title('$Response Historgram$')
ax.set_xticks(ind+width)
ax.set_xticklabels(labels)
print mpl.matplotlib_fname()
canvas = FigureCanvas(fig)
response = HttpResponse(content_type='image/png')
canvas.print_png(response)
return response
Run Code Online (Sandbox Code Playgroud)
这会产生这样的情节:

你可以看到xticks是骨头.关于如何包装它们的任何想法,或使它们可读的baring?再次感谢!
PS:这是Django项目的一部分.我将绘图作为png图像返回 - 通常在各种视图中从img标签中调用它们.
也许试试:
ax.set_xticklabels(labels, rotation=45)
Run Code Online (Sandbox Code Playgroud)
感谢Amro指出rotation可以在任何程度上.
如果您想手动包装标签,您可以在标签名称中插入一个 '\n',这将在您拥有 '\n' 的位置将标签分成两行。你可以在这里看到一个例子。
现在似乎还有一个autowrap 功能,它似乎可以很好地解决这个问题。此示例使用 plt.text,但您也可以使用 plt.xticks 指定它的属性。(即wrap=True)我发现这种标签的对齐方式很混乱,所以我还需要调整水平和垂直对齐方式。
| 归档时间: |
|
| 查看次数: |
4471 次 |
| 最近记录: |