在以下代码段中,我想在图表的所有Y轴刻度标签上附加一个百分号:
import matplotlib as mpl
import pandas as pd
from matplotlib import pyplot as plt
print mpl.__version__, mpl.get_backend()
df = pd.DataFrame({'a': [10, 40], 'b': [20, 30]})
ax = df.plot(kind='bar', title='Plot of Percentage')
plt.draw()
ax.set_yticklabels([x.get_text() + '%' for x in ax.get_yticklabels()])
ax.get_figure().savefig('test.png', bbox_inches='tight')
在python 2.7.13 + matplotlib 1.5.3中,使用后端Qt5Agg,ax.get_yticklabels()
返回空Text
个对象的列表,产生以下输出图像:
上面的代码片段在python 2.6.9 + matplotlib 1.4.2 + Qt4Agg后端和python 2.6.6 + matplotlib 1.3.1 + TkAgg后端下正常工作。
有关答案 0 :(得分:0)
在画布完全绘制之前,实际上并未填充标记标记。由于ticklabels由@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
[...]
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
toggle.setDrawerSlideAnimationEnabled(false);
drawer.addDrawerListener(toggle);
toggle.syncState();
}
确定,因此最佳解决方案当然不是尝试更改ticklabels本身,而是使用方便的Formatter。
这里matplotlib.ticker.***Formatter
似乎是个不错的选择。
FuncFormatter
无需绘制任何内容,此解决方案也独立于后端。