我想制作一个尖峰图:在每个x值处我绘制一条长度为y的线。我可以使用plt.bar
细条。我的问题是我可以指定条宽,但它是以数据坐标给出的,不足以达到此目的。我想将条的宽度设置为1pt。
plt.bar(x,y,width=0.1,align='center',color='black')
有http://matplotlib.org/users/transforms_tutorial.html。但这并没有回答我的问题,x和y应该保留在数据坐标中,只应在“真实大小坐标”中指定条形的宽度,这样放transform=...
将不起作用。另一个问题是我找不到以“真实尺寸单位”(pt,cm,inches,...)指定数据的方法。 (最终目的是制作一份包含在论文中的pdf文件)。
编辑我可以使用vlines
而不是bar
,但是,原始问题仍然让我困惑:如何为同一对象的不同参数指定不同的系统坐标,如何使用真实尺寸单位?
答案 0 :(得分:0)
您可以每次重新缩放宽度,例如:
import matplotlib.pylab as plt
import numpy as np
x = np.linspace(0, 1000, 10)
y = np.random.randint(0, 10, 10)
plt.bar(x, y, width=0.001*max(x))
plt.show()
这使得每个条的宽度始终是总长度的一小部分0.001
。