首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Matplotlib Hexbin对数刻度

Matplotlib Hexbin对数刻度
EN

Stack Overflow用户
提问于 2019-09-28 10:22:35
回答 1查看 704关注 0票数 2

我很难让matplotlib hexbin与log scale一起工作。

这是我的数据的一个子集和一些附带的图片。所有数组包含6,521个值。

代码语言:javascript
运行
复制
x_data = [1.81, 1.516, 6.985, 5.442, 9.419, 1.014, 0.751, 3.77, 1.337, 7.696, 0.491, 0.63, 0.484, 7.165, 0.343, 2.057, 0.218, 0.485, 3.311, 5.976, 3.904, 0.805, 3.94, 0.579, 2.325, 1.57, 0.759, 1.261, 3.975, 0.944]

y_data = [2.069, 0.076, 2.272, 0.501, 0.536, 4.144, 1.452, 7.798, 1.176, 0.832, 0.133, 0.674, 5.275, 1.87, 0.44, 0.229, 0.396, 1.448, 0.514, 0.646, 3.776, 2.2, 1.588, 1.193, 1.005, 1.181, 0.325, 2.47, 1.766, 0.754]

这是我的x_data的柱状图,每箱250个。

plt.hist(x_data, bins=250)

)

用正态散点图将我的数据绘制成对数刻度是没有问题的。

代码语言:javascript
运行
复制
plt.scatter(x_data, y_data, alpha=0.05)
plt.xscale('log')
plt.yscale('log')
ax.set_ylim(0.001,100)
ax.set_xlim(0.001,100)

然而,当我尝试实现一个hexbin时,我得到了类似这样的结果。我试过玩gridesize=、bins=和mincnt=,但什么都不能用。

代码语言:javascript
运行
复制
plt.xscale('log')
plt.yscale('log')
ax.set_ylim(0.001,100)
ax.set_xlim(0.001,100)
plt.hexbin(x_data, y_data, gridsize=(150,150), mincnt=2)

我最终尝试使用了symlog标度。它在某种程度上符合我在对数刻度中的预期,但即使我将x和y lims的最小值设置为0.0001,也不能强制轴低于0.1

代码语言:javascript
运行
复制
plt.xscale('symlog')
plt.yscale('symlog')
ax.set_ylim(0.0001,100)
ax.set_xlim(0.0001,100)
plt.hexbin(x_data, y_data, gridsize=(150,150), mincnt=2)

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2020-08-03 00:24:18

我假设您希望直方图是对数刻度,而不是轴。

Matplotlib提供了3个参数:binsxscaleyscale,它们都可以设置为log。当您希望两个轴都在对数刻度上时,设置bins='log'对我很有效。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58142881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档