我需要使用Matplotlib绘制一个DataFrame。水平线和垂直线的x和y值取决于第一个索引的宽度和高度。然而,我发现axhline在y=0处绘制水平线。然而,Axvline做得很正确。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.randn(8, 4), columns=["A", "B", "C", "D"])
fig, ax = plt.subplots()
tbl = ax.table(
cellText=df.values,
rowLabels=df.index,
colLabels=df.columns,
cellLoc="center",
loc="center",
fontsize=20,
edges="open",
)
ax.axvline(x=tbl[1, -1].get_width(), color="blue", lw=1)
ax.axhline(y=tbl[1, -1].get_bbox().ymax, color="red", lw=1)
ax.axis("off")
字符串
的数据
我意识到如果我硬编码y值,我就可以画直线了
# ...
ax.axhline(y=0.6578, color="red", lw=1)
# ...
型
的
如何使用第一个索引高度位置使axhline正确工作?
2条答案
按热度按时间4ngedf3f1#
您面临的问题是,在绘制轴线之前,需要先绘制表格。如果您在
ax.table(..)
之后,axvline()
和axhline()
之前添加plt.draw()
,它将工作。x1c 0d1x的数据
完整更新代码…(只有一个额外的行:-))
字符串
u4dcyp6a2#
还可以控制地物和轴的尺寸:
字符串
输出量:
的数据