python - 如何在生成的图表中添加测量输入值作为 x 轴标签?
问题描述
我perfplot
过去只做一些测量。我希望将测量的输入值视为与生成的 y 轴标签类似的 x 轴标签。
目前我将10^2 10^3 10^4 10^5 10^6 10^7
其视为 x 轴标签。
我想要16 512 16384 524288 16777216
作为 x 轴标签。
perfplot
内部使用matplotlib
,所以我认为应该可以实现。
示例代码:
import numpy as np
import perfplot
perfplot.show(
setup=lambda n: np.random.rand(n),
kernels=[
lambda a: np.c_[a, a],
lambda a: np.stack([a, a]).T,
lambda a: np.vstack([a, a]).T,
lambda a: np.column_stack([a, a]),
lambda a: np.concatenate([a[:, None], a[:, None]], axis=1),
],
labels=["c_", "stack", "vstack", "column_stack", "concat"],
n_range=[16, 512, 16384, 524288, 16777216],
xlabel="len(a)",
)
电流输出:
解决方案
您可以在完成后使用plot
而不是show
访问当前坐标区对象perfplot
,然后根据需要设置刻度:
import numpy as np
import perfplot
import matplotlib.pyplot as plt
import matplotlib.ticker as mt
n_range = [16, 512, 16384, 524288, 16777216]
perfplot.plot(
setup=lambda n: np.random.rand(n),
kernels=[
lambda a: np.c_[a, a],
lambda a: np.stack([a, a]).T,
lambda a: np.vstack([a, a]).T,
lambda a: np.column_stack([a, a]),
lambda a: np.concatenate([a[:, None], a[:, None]], axis=1),
],
labels=["c_", "stack", "vstack", "column_stack", "concat"],
n_range=n_range,
xlabel="len(a)",
)
ax = plt.gca()
ax.xaxis.set_ticks(n_range)
ax.xaxis.set_major_formatter(mt.StrMethodFormatter('{x}'))
plt.show()
推荐阅读
- deployment - JBoss 部署:一个配置文件下的多个应用程序
- csv - netlogo:从 NetLogo 6.0.3 开始,csv 电子表格中没有“”
- sencha-touch - 从 extReact sencha 组件中的 Closable TabPanel 获取活动选项卡
- python - 带轻弹帽的 OWI 机械臂
- javascript - 如何将 highchart-more 导入 angular-cli 6 项目
- java - 无法使用 java api 为 Elasticsearch 构建查询
- excel - 带有指向另一个工作簿的链接的单元格值未更新
- mysql - Redshift / MySQL - 检查 2 个整数列之间的不相等性返回错误的结果
- angular - ngrx 测试方法调度动作
- java - 关于Gson和Java模型类的问题