请参阅附图
我在python中有如下源代码
def plotBarChartH(self,data):
LogManager.logDebug('Executing Plotter.plotBarChartH')
if type(data) is not dict:
LogManager.logError('Input data parameter is not in right format. Need a dict')
return False
testNames = []
testTimes = []
for val in data:
testNames.append(val)
testTimes.append(data[val])
matplotlib.rcParams.update({'font.size': 8})
yPos = np.arange(len(testNames))
plt.barh(yPos, testTimes, height=0.4, align='center', alpha=0.4)
plt.yticks(yPos, testNames)
plt.xlabel('time (seconds)')
plt.title('Test Execution Times')
savePath = os.path.join(ConfigurationManager.applicationConfig['robotreportspath'],'bar.jpg')
plt.savefig(savePath)
plt.clf()
return True
酒吧看起来很好,但我有两个问题
如何才能完整显示y轴上的文字?我的意思是一些文字是截止的,我想扩大占用的空间,以便它可以完整显示。
我可以增加绘制图表的整个绘图区域吗?我想增加绘图区域的宽度,使图像看起来更大
感谢
答案 0 :(得分:4)
使用Figure
plt.tight_layout()`创建plt.figure(figsize=(width,height)), and call
对象时,可以明确设置图形大小(以英寸为单位),以便为您的刻度标签腾出空间,如下所示:
import matplotlib.pyplot as plt
names = ['Content Channels','Kittens for Xbox Platform','Tigers for PS Platform',
'Content Series', 'Wombats for Mobile Platform']
values = [260, 255, 420, 300, 270]
fig = plt.figure(figsize=(10,4))
ax = fig.add_subplot(111)
yvals = range(len(names))
ax.barh(yvals, values, align='center', alpha=0.4)
plt.yticks(yvals,names)
plt.tight_layout()
plt.show()
答案 1 :(得分:1)
"\n".join(wrap(longstring,60)
(或使用fig.subplots_adjust(left=0.3)
中的import matplotlib.pyplot as plt
import numpy as np
val = 1000*np.random.rand(5) # the bar lengths
pos = np.arange(5)+.5 # the bar centers on the y axis
name = ['name','really long name here',
'name 2',
'test',
'another really long \n name here too']
fig, ax = plt.subplots(1,1)
ax.barh(pos, val, align='center')
plt.yticks(pos, name)
fig.subplots_adjust(left=0.3)
plt.show()
作为this的答案)。
您可以使用figsize
调整绘图区域以确保显示整个字符串示例:
fig, ax = plt.subplots(1,1, figsize=(12,8))
给出了
ax.set_xlim((0,800))
参数调整物理图形大小以显示子图或图。示例:
ax.set_xlim((0,data.max()+200))
可以通过根据数据设置轴来调整图中的空间量,
```{r, results='asis', echo=FALSE}
Series.title <- c("Group 1", "Group 2", "Group 3")
Series.quarter <- "SQ?"
for (i in 1:3) {
cat(sprintf("%s %s Quarters Forecast \n\n", Series.title[i], Series.quarter))
for (j in 1:3) {
cat(sprintf("![](graph%i-%i.png) \n", j, i))
}
}
```
或使用Group 1 SQ? Quarters Forecast
![](graph1-1.png)
![](graph2-1.png)
![](graph3-1.png)
Group 2 SQ? Quarters Forecast
![](graph1-2.png)
![](graph2-2.png)
![](graph3-2.png)
Group 3 SQ? Quarters Forecast
![](graph1-3.png)
![](graph2-3.png)
![](graph3-3.png)
进行自动化。
答案 2 :(得分:1)
您可以使用plt.axes
来控制轴的绘制位置,这样您就可以在左侧区域留出更多空间。一个例子可能是plt.axes([0.2,0.1,0.9,0.9])
。
我不明白你的意思。
plt.figure
(例如plt.figure(figsize = (6,12))
)plt.[xy]lim
控制信息与轴之间的空间。例如,如果您想在右侧区域中留出更多空白,则可以使用plt.xlim(200, 600)
。plt.axes
保存一些保证金空间(参见上面的问题1)。答案 3 :(得分:1)
截至2020年:只需在plt上调用.autoscale
即可:
您可以在plt.show()
plt.autoscale()
OR
plt.autoscale(enable=True, axis='y', tight=None)