【问题标题】:cannot change ticks in subplots无法更改子图中的刻度
【发布时间】:2014-12-24 23:08:00
【问题描述】:

我正在尝试更改子图中的刻度:结果如下图所示。

我使用以下代码:

plt.subplot(2,2,1)
plt.scatter(d,d1,c=chi,s=25,edgecolor='')
plt.xticks(tic,lab)
plt.vlines(dm,min(d1),max(d1),color='b')
plt.vlines(dma,min(d1),max(d1),color='b')
plt.hlines(d1ma,min(d),max(d),color='b')
plt.hlines(d1ma,min(d),max(d),color='b')
plt.xlabel("$\delta$")
plt.ylabel('$\delta_1$')
plt.colorbar()

plt.subplot(2,2,3)
plt.scatter(d,L,c=chi,s=25,edgecolor='')
plt.xticks(tic,lab)
plt.vlines(dm,min(L),max(L),color='b')
plt.vlines(dma,min(L),max(L),color='b')
plt.hlines(Lm,min(d),max(d),color='b')
plt.hlines(Lma,min(d),max(d),color='b')
plt.xlabel("$\delta^\prime$")
plt.ylabel('L')
plt.colorbar()


plt.subplot(2,2,4)
plt.scatter(d1,L,c=chi,s=25,edgecolor='')
plt.vlines(d1m,min(L),max(L),color='b')
plt.vlines(d1ma,min(L),max(L),color='b')
plt.hlines(Lm,min(d1),max(d1),color='b')
plt.hlines(Lma,min(d1),max(d1),color='b')
plt.xlabel("$\delta_1$")
plt.ylabel('L')
plt.colorbar()

plt.savefig('cnf_lin.png')
plt.show()

要更改 xaxis 中的刻度,我使用 xticks(tik,lab) 其中 ticklab 是包含我的新刻度和标签的列表,但是 python(如果重要的话是 2.7)会将我的标签覆盖为旧标签。

我做错了什么?

【问题讨论】:

  • 你能提供你的代码的最小工作示例吗?
  • @Ffisegydd 这可能是个问题:列表d,L,d1 是从一个长文件中读取的,dm,LM,d1m 是平均值,dma,Lma,d1ma 是最佳拟合值。 chi 是卡方
  • 在这种情况下,您能否仅编造一些仍然复制问题的值?为简单起见,您还可以将其减少到一个子图吗? (这是最小工作示例的 minimum 部分:))

标签: python-2.7 matplotlib axes subplot


【解决方案1】:

我解决了问题(无论如何谢谢):xticks 是 subplot 的方法(我认为),所以它必须按以下方式调用:

a1=plt.subplot(2,2,1)
a1.set_xticks(list)  #list contains the new ticks
....  # the rest of the code

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 2021-05-26
    • 1970-01-01
    • 2019-02-23
    相关资源
    最近更新 更多