Pyplot:用set xscale('log')和xticker标签生成整数格式的绘图[0,0.5,1,2,4,6,8]

2024-10-08 19:27:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一些帮助来策划Matplotlib.pyplot在Python2.7下!在

我想用以下x轴生成绘图:

x-axis as it should be

我用了myaxis.set_xticks([0,0.5,1,2,4,6,8])这看起来不错,但是如果我想创建一个对数x轴***,那么我的轴标签是这样的!在

wrong x-axis labels

我该怎么做才能同时拥有对数刻度的x轴和整数格式的标签(也不是作为标签的对数值!)。请阅读有关日志刻度的说明!!!

在浏览Stackoverflow时,我发现了下面类似的问题,但是这些建议对我来说都不起作用,我不知道我做错了什么。在

Matplotlib: show labels for minor ticks also

谢谢!在

注:此图称为Madau图请参见:ADSAB[dot]哈佛[dot]edu Madau(1998)DOI=10.1086/305523)。虽然轴是对数刻度轴和log10(0)=Error,但通常绘制它的对数刻度并显示z=0.0值。我在这里肯定要指出,这在我的领域是很常见的,但不应该一对一地应用于任何其他的绘图。所以事实上这是一个诡计!绘制(1+z)[1,1.5,2,3,5,7,9]],然后将x轴转换为纯z值0.0<;z8.0!所以我需要找到的是如何将xticks设置为“翻译的”值([0,0.5,1,2,4,6,8])


Tags: 绘图labelsmatplotlibas绘制对数it标签
1条回答
网友
1楼 · 发布于 2024-10-08 19:27:08

如果您在其他地方绘制了与x=0相对应的数据点,比如x=0.25,然后重新标记它呢。例如

import matplotlib.pyplot as plt
fig, ax = plt.subplots()

plot_vals = [0.25, 0.5, 1, 2, 4, 6, 8]
label_vals = [0, 0.5, 1, 2, 4, 6, 8]

ax.plot(plot_vals, plot_vals, 'k-o')

ax.set_xscale('log')
ax.set_xticks(plot_vals) 
ax.set_xticklabels(label_vals) # relabeling the ticklabels

我认为这就是你想要的。在

enter image description here

您可以通过执行以下操作来关闭小记号:

^{pr2}$

编辑:如果对op进行编辑,则可以通过以下方式轻松完成:

import matplotlib.pyplot as plt


original_values = [0, 0.5, 1, 2, 4, 6, 8]

# if using numpy:
# import numpy as np
# plot_values = np.array(original_values) + 1

# if using pure python
plot_values = [i + 1 for i in original_values]

fig, ax = plt.subplots()
ax.plot(plot_values, plot_values, 'k-o') #substitute actual plotting here
ax.set_xscale('log')
ax.set_xticks(plot_values)
ax.set_xticklabels(original_values)

结果是:

enter image description here

相关问题 更多 >

    热门问题