首页 > 解决方案 > 在 python 图中将 2^n 转换为数值

问题描述

我正在尝试在 python 中绘制一条线并在轴上使用对数基刻度。但是,我希望将值显示为数值而不是 2^n,即 2^1 应显示为 2,2^2 应显示为 4,依此类推。是否可以更改这些值?

这是我当前的绘图代码:

	# plot the line
	plt.plot(labeled_samples, result, color='black', label='Normal SVM', marker='*')
	#plt.plot(, color='black', label = 'Polynomial', marker='o')
	plt.legend(loc="upper right")
	plt.ylim([0.05, 0.5])
	plt.yticks(np.arange(0.05, 0.55, 0.05))
	plt.xscale('log', basex=2)
	plt.xlabel('Nb of labeled points')
	plt.ylabel('Test error')
	set_major_formatter(ScalarFormatter())
	plt.show()

在此处输入图像描述

标签: pythonmatplotlib

解决方案


这是一种方法:使用整数值修改 x 轴上的刻度标签。您未能提供最小、完整和可验证的示例,因此我使用了一些测试数据

x = np.logspace(1, 7, 7, base=2, dtype=int)
y = x**0.05
plt.plot(x, y, color='black', label='Normal SVM', marker='*')
plt.legend(loc="upper right")

plt.xscale('log', basex=2)
plt.xlabel('Nb of labeled points')
plt.ylabel('Test error')
plt.xticks(x, x);

在此处输入图像描述


推荐阅读