鱼C论坛

 找回密码
 立即注册
查看: 2193|回复: 8

[已解决]用pycharm设置x轴刻度线没反应

[复制链接]
发表于 2023-7-18 22:34:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import matplotlib.pyplot as plt
x = [1,2,3,4,5,6]
y = [10,42,35,46,7,34]
plt.rcParams['font.sans-serif']=['SimHei']
plt.plot(x,y,marker='o')
for a,b in zip(x,y):
    plt.text(a,b,b,ha='center',va='bottom',fontsize=12,color='r')

# 添加文本注释
plt.annotate('最大数',xy=(4,46),xytext=(5,46),arrowprops=dict(facecolor='r',shrink=0.05))

plt.tick_params(bottom=True,left=True,right=True,top=True)
plt.rcParams['xtick.direction']='in'
plt.rcParams['ytick.direction']='in'
plt.show()

我想设置x,y轴的刻度线在里面,我把“in”改成"out",效果都一样
最佳答案
2023-7-19 17:14:37
hahadaxiao 发表于 2023-7-19 17:06
https://blog.csdn.net/gsgbgxp/article/details/125077492

import matplotlib.pyplot as plt
x = [1,2,3,4,5,6]
y = [10,42,35,46,7,34]
plt.rcParams['font.sans-serif']=['SimHei']
plt.plot(x,y,marker='o')
for a,b in zip(x,y):
    plt.text(a,b,b,ha='center',va='bottom',fontsize=12,color='r')

# 添加文本注释
plt.annotate('最大数',xy=(4,46),xytext=(5,46),arrowprops=dict(facecolor='r',shrink=0.05))


plt.rcParams['xtick.direction'] = 'in'  
plt.rcParams['ytick.direction'] = 'in'
plt.tick_params(bottom=True,left=True,right=True,top=True)                     # 把这句放到下面才可以生效      
plt.show()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-18 22:34:58 | 显示全部楼层
答案:

这是因为您没有在 plt.tick_params() 函数中指定轴的方向。在 plt.tick_params() 中,您需要明确指定哪个轴应用这些参数。您可以使用 axis 参数来指定,可能的值是'x','y',或者'both'。您可以尝试以下修改:
plt.tick_params(axis='both', direction='in', bottom=True, top=True, left=True, right=True)
解释:

在matplotlib库中, tick_params() 函数用于改变刻度线的属性。这些属性可以是颜色、刻度值的方向、刻度线的宽度等。在您的代码中,您试图改变x轴和y轴的刻度线的方向。

在您的原始代码中,您在 plt.tick_params() 中设置 bottom=True,left=True,right=True,top=True ,这只是打开了所有的刻度线,但并未指定方向,这就是为什么刻度线的方向没有改变的原因。

而在修改后的代码中,通过设置 axis='both' 和 direction='in' ,我们指定了刻度线应用于x轴和y轴,并且刻度线的方向是向内的。这样设置后,刻度线的方向就会按照预期的方式显示出来了。

所以,如果您想设置x轴或y轴的刻度线在里面,只需要在 tick_params 函数中指定 axis 和 direction 参数即可。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-18 23:26:58 | 显示全部楼层
你的代码已经正确地设置了刻度线的方向为"inside"。这样设置后,刻度线应该是在图形的内部。然后你说你试图将'in'改为'out',但效果没有变化,这可能是因为你的修改没有正确应用。

这是一个例子,演示如何更改刻度线的方向:
import matplotlib.pyplot as plt

x = [1,2,3,4,5,6]
y = [10,42,35,46,7,34]

plt.rcParams['font.sans-serif']=['SimHei']
plt.plot(x,y,marker='o')

for a,b in zip(x,y):
    plt.text(a,b,b,ha='center',va='bottom',fontsize=12,color='r')

# 添加文本注释
plt.annotate('最大数',xy=(4,46),xytext=(5,46),arrowprops=dict(facecolor='r',shrink=0.05))

plt.tick_params(bottom=True,left=True,right=True,top=True, direction='out')  # 改变刻度线向外
plt.show()
在这个例子中,我在plt.tick_params函数中添加了direction='out'。这将使得刻度线向外延伸。如果你在你的代码中这样做,但没有看到期望的效果,那么可能需要查看你的matplotlib版本,或者检查是否有其他设置覆盖了这个设置

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-19 15:30:52 | 显示全部楼层
isdkz 发表于 2023-7-18 22:34
答案:

这是因为您没有在 plt.tick_params() 函数中指定轴的方向。在 plt.tick_params() 中,您需要明确指 ...

我刻度线左边设置往里、下边往里、上边往外、右边往外,怎么写代码呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-19 15:42:08 | 显示全部楼层
hahadaxiao 发表于 2023-7-19 15:30
我刻度线左边设置往里、下边往里、上边往外、右边往外,怎么写代码呀

这个应该做不到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-19 15:44:18 | 显示全部楼层
isdkz 发表于 2023-7-19 15:42
这个应该做不到

plt.rcParams['xtick.direction']='in'
plt.rcParams['ytick.direction']='in'

我网上看过,别人Jupyter Notebook也是用这代码的喔,我在pycharm上面使用没反应
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-19 15:59:27 | 显示全部楼层
hahadaxiao 发表于 2023-7-19 15:44
plt.rcParams['xtick.direction']='in'
plt.rcParams['ytick.direction']='in'

有链接吗?发来看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-19 17:06:14 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-19 17:14:37 | 显示全部楼层    本楼为最佳答案   
hahadaxiao 发表于 2023-7-19 17:06
https://blog.csdn.net/gsgbgxp/article/details/125077492

import matplotlib.pyplot as plt
x = [1,2,3,4,5,6]
y = [10,42,35,46,7,34]
plt.rcParams['font.sans-serif']=['SimHei']
plt.plot(x,y,marker='o')
for a,b in zip(x,y):
    plt.text(a,b,b,ha='center',va='bottom',fontsize=12,color='r')

# 添加文本注释
plt.annotate('最大数',xy=(4,46),xytext=(5,46),arrowprops=dict(facecolor='r',shrink=0.05))


plt.rcParams['xtick.direction'] = 'in'  
plt.rcParams['ytick.direction'] = 'in'
plt.tick_params(bottom=True,left=True,right=True,top=True)                     # 把这句放到下面才可以生效      
plt.show()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 09:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表