pythoner97 2023-08-02 16:38 采纳率: 100%
浏览 4
已结题

python使用matplotlib绘图刻度标签问题

我在对数坐标中指定X轴刻度是遇到显示多余的刻度标签
代码:

ax[0].tick_params(labelsize=10)
# ax[0].set_xticks([300, 500, 1000, 2000])  # 设置刻度
ax[0].set_xticklabels([300, 500, 1000, 2000])  # 设置刻度标签
ax[0].set_yscale('log')
ax[0].set_xscale('log')
ax[0].set_ylim(40, 1000)
ax[0].set_xlim(300, 2000)

结果:

img

请问该如何只显示300 500 1000 2000这几个点而且不是科学计数的形式?

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-02 18:28
    关注

    【以下回答由 ChatGPT 生成】

    要解决这个问题,你可以使用LogLocatorFixedFormatter来指定对数坐标的刻度和刻度标签。

    首先,你需要导入matplotlib.ticker模块,然后修改你的代码如下:

    import matplotlib.ticker as ticker
    ax[0].tick_params(labelsize=10)
    ax[0].set_xscale('log')
    ax[0].set_yscale('log')
    
    # 设置X轴刻度
    x_ticks = [300, 500, 1000, 2000]
    ax[0].xaxis.set_ticks(x_ticks)
    
    # 设置X轴刻度标签
    x_ticklabels = [str(x) for x in x_ticks]
    ax[0].xaxis.set_ticklabels(x_ticklabels)
    
    # 设置Y轴刻度
    y_ticks = [40, 1000]
    ax[0].yaxis.set_ticks(y_ticks)
    
    # 设置Y轴刻度标签
    y_ticklabels = [str(y) for y in y_ticks]
    ax[0].yaxis.set_ticklabels(y_ticklabels)
    
    # 将刻度标签的格式设置为非科学计数的形式
    ax[0].xaxis.set_major_formatter(ticker.ScalarFormatter())
    ax[0].yaxis.set_major_formatter(ticker.ScalarFormatter())
    
    ax[0].set_ylim(40, 1000)
    ax[0].set_xlim(300, 2000)
    

    这样,你的图形就会只显示300、500、1000和2000这几个点,并且刻度标签会以非科学计数的形式显示。



    【相关推荐阅读】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月14日
  • 专家已采纳回答 8月6日
  • 创建了问题 8月2日

悬赏问题

  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊
  • ¥15 求多普勒频移瞬时表达式
  • ¥15 如果要做一个老年人平板有哪些需求