python - 改变 x、y 轴改变 Matplotlib 散布气泡
问题描述
我正在尝试制作一个带标签的气泡图。我已经x,y
在 df 中指定了每个气泡的位置。我的问题是情节切断了气泡的边缘:
我想我可以通过更改x
和y
轴限制来纠正这个问题,但这也会移动气泡:
我已经寻找解决方案并尝试添加ax.margins(2, 2)
,但这也不起作用:
我真的很想知道为什么会这样?以及如何解决它?提前谢谢了。这是我的代码,包括我尝试过的代码:
x = [-0.3, 1.5, 2.3, 2, 4.3, 0, 2.9]
y = [0.94, 1.04, 1.5, 0.7, 1.3, 1.55, 1]
size = [5850, 2600, 6500, 1300, 4550, 7150, 1950]
label = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
df = pd.DataFrame({
'x': x,
'y': y,
's': size,
'label': label
})
fig, ax = plt.subplots(facecolor='w')
#plt.xlim(-2,7)
#plt.ylim(0.4,2)
#ax.margins(2, 2)
for key, row in df.iterrows():
ax.scatter(row['x'], row['y'], s=row['s']*5, alpha=.5)
ax.annotate(row['label'], xy=(row['x'], row['y']))```
解决方案
您的问题是标记大小s
是图像点**2,而不是协调单位:
https://matplotlib.org/3.3.3/api/_as_gen/matplotlib.pyplot.scatter.html
您可以验证它,打开控制台并编写:
import matplotlib.pyplot as plt
plt.ion()
plt.scatter([0], [0], s=10)
# Check, how it looks now
plt.xlim(-5, 5)
# Check that it looks the same
scatter
不是这项工作的正确工具。使用Ellipse
,这里有一些启发:
推荐阅读
- r - 网络抓取亚马逊书名
- java - 对象和引用创建
- c# - 运行 WEB API for ASP.NET 框架的进程是什么
- java - 在 WSL 上使用 Java 和 Sbt (Scala) 的 VSCode for Play 框架
- python-3.x - 循环气流变量问题
- python - 如何修复“AttributeError:DELIVERABLE 实例没有属性‘pygameWindow’”
- tcl - 错误 # args: 应该是“for start test next command”
- java - 如何获取 ListView 项的 ID 而不是列表视图上的位置?
- r-markdown - R降价和定制包
- android - 转义房间数据库查询中的特殊字符