我有一个条形图,我想得到它的颜色和x / y值。以下是示例代码:
import matplotlib.pyplot as plt
def main():
x_values = [1,2,3,4,5]
y_values_1 = [1,2,3,4,5]
y_values_2 = [2,4,6,8,10]
f, ax = plt.subplots(1,1)
ax.bar(x_values,y_values_2,color='r')
ax.bar(x_values,y_values_1,color='b')
#Any methods?
plt.show()
if __name__ == '__main__':
main()
是否有 ax.get_xvalues()
,ax.get_yvalues()
,ax.get_colors()
等方法,我可以使用这些方法,以便从ax
列表中提取x_values
,y_values_1
,y_values_2
以及颜色'r'
和'b'
?
答案 0 :(得分:2)
ax
知道它绘制的几何对象是什么,但没有关于它会跟踪这些几何对象的添加时间,当然它不知道它们的意思是什么:哪个补丁来自哪个条形图等。编码器需要跟踪它以重新提取正确的部分以供进一步使用。执行此操作的方法对于许多Python程序来说都很常见:对barplot
的调用会返回BarContainer
,您可以在此时命名并稍后使用:
import matplotlib.pyplot as plt
def main():
x_values = [1,2,3,4,5]
y_values_1 = [1,2,3,4,5]
y_values_2 = [2,4,6,8,10]
f, ax = plt.subplots(1,1)
rbar = ax.bar(x_values,y_values_2,color='r')
bbar = ax.bar(x_values,y_values_1,color='b')
return rbar, bbar
if __name__ == '__main__':
rbar, bbar = main()
# do stuff with the barplot data:
assert(rbar.patches[0].get_facecolor()==(1.0,0.,0.,1.))
assert(rbar.patches[0].get_height()==2)
答案 1 :(得分:0)
对上述答案略有不同,将其全部放在对另一个绘图命令的调用中:
# plot various patch objects to ax2
ax2 = plt.subplot(1,4,2)
ax2.hist(...)
# start a new plot with same colors as i'th patch object
ax3 = plt.subplot(1,4,3)
plot(...,...,color=ax2.axes.containers[i].patches[0].get_facecolor() )
换句话说,我似乎需要轴句柄和容器句柄之间的轴属性,以便它更通用。