我有像this這樣的表問題,顯然使用爲該答案提供的解決方案,我可以調整單元格。我不明白的是,沒有做眼球測試,如何檢測,一個是太大,另一個是太小檢測matplotlib表需要調整
更新 的代碼創建如下圖。請注意表格下文字的大小和列表中文字的大小。在太大,名單太小。我如何以編程方式檢測這些條件,而不必直觀地查看圖表。
import sys
import numpy as np
import pandas as pd
import random
import string
import matplotlib.pyplot as plt
import matplotlib.gridspec as grid_spec
def id_generator(size=6, chars=string.ascii_uppercase + string.digits):
return ''.join(random.choice(chars) for _ in range(size))
month_labels = "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
month_list = np.r_[1:13]
month_bar_width = .35
plt.ion()
with plt.style.context('fivethirtyeight'):
fig = plt.figure(figsize=(8.5, 11))
gs = grid_spec.GridSpec(3, 3)
ax1 = plt.subplot(gs[0:2, 0:])
ax2 = plt.subplot(gs[2:3, 0])
names = [id_generator(10) for _ in range(20)]
counts = [random.randint(0,50) for _ in range(12)]
current_bbox = ax1.get_position()
bottom_of_1 = current_bbox.y0
current_bbox.y0 += (1 - current_bbox.y0) * .25
ax1.set_position(current_bbox)
cell_text = []
row_labels = []
row_colors = []
bar_start = np.arange(len(month_list))
bar_width = (bar_start[1] - bar_start[0]) * 0.7
row_bottom = np.zeros(len(month_list))
ax1.bar(bar_start, counts, width=bar_width)
cell_text.append(counts)
tbl = ax1.table(cellText=cell_text,loc='bottom')
ax1.set_xticks([])
rows = list(zip(names, counts))
tbl = ax2.table(cellText=rows, loc='center')
ax2.set_xticks([])
ax2.set_yticks([])
更新2我可以從以前的答案添加以下代碼:
table_props = tbl.properties()
table_cells = table_props['child_artists']
for cell in table_cells: cell.set_height(0.1)
但0.1通過目測圖形並看着高度的當前值拾取。我正在尋找的是如何在不看圖的情況下計算0.1。如果當前身高是.5,身高太小,我需要將它做得更大,但是如果我想讓它變小,它必須是.4。知道你處於什麼狀況的公式是什麼?或者相反知道高度是好的,但你需要改變字體大小。
你的問題聽起來不清楚。請提供[最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve),以及您的期望。 – jrjc
已更新,以說明該問題。 – cryptoref
儘管你做了一些努力,但這不是一個最小的,完整的和可驗證的例子。請提供您期望的和您嘗試的。 – jrjc