关闭

【python】matplotlib在把坐标轴移到中间后如何去掉两个坐标轴上多余的一个0?

标签: pythonmatplotlib
4546人阅读 评论(0) 收藏 举报
分类:

问题

【python】matplotlib生成散点矩阵图 中,画出的图把坐标轴移动到中间后,x和y轴的0需要去掉一个。这个如何办到?

解决

获取坐标轴后,用坐标轴的函数set_yticks或者set_xticks来设置轴显示的标记。
但是,需要注意函数set_yticks或者set_xticks的使用位置,似乎使用了ax.spines后,程序会重置坐标轴的标记显示,比如这样写是不会去掉那个0的(即使我已经在set_yticks里面去掉0 了):

plt.scatter(data[:,0], data[:,1], c='r')

ax.set_yticks([-3, -2, -1, 1, 2, 3])

ax.spines['right'].set_visible(False)
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

把set_yticks放在spines的后就好了,像这样:
完整画图代码:

import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt('scatterData.txt')

X = [-3, -2, -1, 0, 1, 2, 3]
Y = [-2, -1, 0, 1, 2]

fig, ax = plt.subplots()

plt.scatter(data[:,0], data[:,1], c='r')


ax.spines['right'].set_visible(False)
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

ax.set_yticks([-3, -2, -1, 1, 2, 3])

plt.savefig('scatter.png', dpi = 300)
plt.show()

scatterData.txt里面的数据在这篇文章里面:【python】matplotlib生成散点矩阵图
画出的图是这样的:
2


我为什么要写这个
我是参考这个教程来学习的:Matplotlib 教程,但是里面没有说,在移到坐标轴后怎么去掉两个轴中多余的一个0,以此做补充。

0
1
查看评论

matplotlib 可视化 —— 移动坐标轴(中心位置)

通常软件绘图,包括 matlab、python 的 matplotlib,默认都是将坐标轴置于画布(figure)的最下侧(x 轴),最左侧(y 轴),也即将坐标原点置于左下角。而我们自己理解数学,以及手动绘图时,都会将坐标轴置于中心的位置。 1. 导入相关的包import numpy as np ...
  • lanchunhui
  • lanchunhui
  • 2016-08-26 09:27
  • 4031

matlab保存figure中的图片去掉白边

输出图片成可直接调入的灰度图,设置输出图片空白边距,以及调整图片大小,纵横比。 一、先显示图片,imshow。如果是plot,或者newplot,直接看“三”。 imshow(strain_image,'border','tight','initial...
  • gxuan
  • gxuan
  • 2013-04-07 15:49
  • 36107

matplotlib命令与格式:图例legend语法及设置

1.设置图例legend legend语法参数如下: matplotlib.pyplot.legend(*args, **kwargs) Keyword Description loc Location code string, or tuple (see ...
  • helunqu2017
  • helunqu2017
  • 2017-11-27 01:13
  • 1166

matplotlib tricks(关闭坐标刻度、坐标轴不可见)

1. 关闭坐标刻度 plt.xticks([]); plt.yticks([])
  • lanchunhui
  • lanchunhui
  • 2016-10-26 10:25
  • 6485

matplotlib去掉坐标轴刻度

#! usr/bin/python #coding=utf-8 import numpy as np import matplotlib.pyplot as plt data=np.random.rand(10,10) fig, ax=plt.subplots() data[data==-1]=...
  • ginynu
  • ginynu
  • 2017-04-01 15:27
  • 4831

python 画图--简单开始及折线图

python 画图 一、环境准备            linux ubuntu 下需安装下面三个包:                   Nu...
  • jenyzhang
  • jenyzhang
  • 2016-07-27 16:20
  • 46497

matplotlib绘图基础

http://blog.csdn.net/pipisorry/article/details/37742423matplotlib介绍        matplotlib 是python最著名的绘图库,它提供了一整套和matlab...
  • pipisorry
  • pipisorry
  • 2014-07-13 20:02
  • 34022

Python matplotlib pyplot中title() xlabel() ylabel()无法显示在中文(方框乱码)的解决办法

Python matplotlib包其实是支持unicode的,但是我在实验中无法正常显示中文,比如说在pyplot.title()中输出中文,我试过以下几种方法均不奏效: pyplot.title('中文') pyplot.title("中文") pyplo...
  • GarfieldEr007
  • GarfieldEr007
  • 2016-05-14 12:09
  • 7977

matlab legend图例无边框和输出高次方项

图例无边框 legend boxoff; 图例中输出高次方项 legend('x^2','x^3'); 效果如图所示 详细代码请看上一篇《高斯分布概率密度函数(PDF)和累积分布函数(CDF)》
  • renwudao24
  • renwudao24
  • 2015-03-19 22:06
  • 2431

matplotlib基本绘图参数

导入绘图包import matplotlib.pyplot as plt import numpy as np使用from pylab import *一次导入matplotlib.pyplot和numpy也可以,但是不推荐,推荐像上面一样分别导入,以防导入中出现错误而难以检查。生成模拟数据点X =...
  • SA14023053
  • SA14023053
  • 2016-07-05 22:09
  • 8972
    简介
    个人资料
    • 访问:205800次
    • 积分:2987
    • 等级:
    • 排名:第13929名
    • 原创:112篇
    • 转载:0篇
    • 译文:2篇
    • 评论:23条
    最新评论