当前位置: 首页 > 知识库问答 >
问题:

如何强制图形轴为整数?[副本]

楚威
2023-03-14

我有以下代码:

import matplotlib
import numpy as np
from matplotlib import pyplot as plt
from matplotlib.ticker import MaxNLocator
import math


filename = "populations.txt"

data = np.loadtxt(filename, usecols = 0)
year = data

data = np.loadtxt(filename, usecols = 1)
hares = data

data = np.loadtxt(filename, usecols = 2)
lynxes = data

data = np.loadtxt(filename, usecols = 3)
carrots = data

fig, axes = plt.subplots(nrows=3, figsize=(10,6))

axes[0].plot(year,hares)
axes[0].set_ylim([0,80000])

axes[1].plot(year,lynxes)
axes[1].set_ylim([0,80000])

axes[2].plot(year,carrots)
axes[2].set_ylim([0,80000])

axes[0].xaxis.set_major_locator(MaxNLocator(integer=True))

人口。txt文件

# year  hare    lynx    carrot
1900    30e3    4e3 48300
1901    47.2e3  6.1e3   48200
1902    70.2e3  9.8e3   41500
1903    77.4e3  35.2e3  38200
1904    36.3e3  59.4e3  40600
1905    20.6e3  41.7e3  39800
1906    18.1e3  19e3    38600
1907    21.4e3  13e3    42300
1908    22e3    8.3e3   44500
1909    25.4e3  9.1e3   42100
1910    27.1e3  7.4e3   46000
1911    40.3e3  8e3 46800
1912    57e3    12.3e3  43800
1913    76.6e3  19.5e3  40900
1914    52.3e3  45.7e3  39400
1915    19.5e3  51.1e3  39000
1916    11.2e3  29.7e3  36700
1917    7.6e3   15.8e3  41800
1918    14.6e3  9.7e3   43300
1919    16.2e3  10.1e3  41300
1920    24.7e3  8.6e3   47300

情节结果

如何强制x轴上的年份标签是从1900到1920的整数(相应地保存在“年份”数组中),以及为什么它们首先显示为浮点数?

我试图在axes[0]的情节中强行处理这件事,但这似乎只是引起了其他问题。我错过了什么?

理想情况下,我也希望不必将1900 - 1920硬编码为年份跨度,因为数据集可能会增长。我如何确保np.loadtxt()从一开始就将数据保存为整数,这样这个整数/浮点标记问题就永远不会出现?不幸的是,dtype=np.int没有改变任何事情。

谢啦!

共有2个答案

居乐池
2023-03-14

由Johnc在评论中解决:

好吧,读取年份时同时执行dtype=np.intax.set_xticks(范围(最小(年份),最大(年份)1,2)ax.set_xticks(范围(int(min(年份)), int(max(年份))1,2)

巫马泓
2023-03-14

欢迎使用Stackoverflow。

如果手动指定输入,可以通过导入数学模块或仅使用范围来完成此操作。

import math
y_vals = range(math.floor(min(0)), math.ceil(max(80000))+1)

在设置y时钟时添加y VAL。我在那里添加了数学函数,以防处理其他不需要手动输入的值,我在过去引用过这个答案。您可以同样轻松地执行范围(080001),它将起作用。

那么它就是:

axes[0].set_yticks(y_vals)

对所有轴都这样做。

 类似资料:
  • 问题内容: 我正在使用matplotlib.pyplot模块绘制直方图,并且想知道如何强制y轴标签仅显示整数(例如0、1、2、3等)而不显示小数(例如0.,0.5) ,1,,1.5、2等)。 我正在查看指导说明,怀疑答案在matplotlib.pyplot.ylim周围,但是到目前为止,我只能找到设置最小和最大y轴值的东西。 问题答案: 如果你有y数据 您可以使用此数据的最大值和最小值来创建此范围

  • 我正在使用matplotlib绘制直方图。pyplot模块,我想知道如何强制y轴标签只显示整数(例如0、1、2、3等),而不显示小数(例如0、0.5、1、1.5、2等)。 我在看指导说明,怀疑答案就在matplotlib附近。pyplot。但到目前为止,我只能找到设置最小和最大y轴值的东西。

  • 谁能解释一下这最后一行吗?我需要最终确定两个顶点是否相连。

  • 我有一个自定义的类,我将它添加到我的中并不断更新。这个类有一个overidden和一个。如何在中绘制的图形上绘制?我经常通过一个循环更新这个,就是它,但是我没有更改。我的自定义类是我的类的子类。 我的面板类

  • 在C++中,我们可以强制函数内联。 这在C#中也是可能的吗?有时,当方法很小时,它会自动内联。但是在C#/.NET中强制内联函数是否可能?