【发布时间】:2020-02-24 22:31:10
【问题描述】:
我有以下代码:
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 之间的整数(相应地保存在“年份”数组中),为什么它们首先显示为浮点数?
我试图在轴[0] 情节中强加此事,但这似乎只是引起了其他问题。我错过了什么?
理想情况下,我也希望不必将 1900 - 1920 年作为年份跨度进行硬编码,因为数据集可能会增长。我如何确保 np.loadtxt() 从一开始就将数据保存为整数,以便从一开始就不会出现这个整数/浮点标签问题?
不幸的是,dtype = np.int 没有改变任何东西。
谢谢!
【问题讨论】:
-
感谢您的建议!不幸的是
dtype=np.int没有改变轴标签。set_xticks运行良好,但是如果人口数据集包含更多年份,它们不会随之改变。我不想硬编码年份跨度。dtype=np.int听起来更像我需要的,但它似乎没有任何效果。 -
这是个好主意,但是:'numpy.float64' 对象不能被解释为整数。我从中得出的结论是,需要排序的问题是如何防止数组首先变成浮点数组,特别是考虑到数据都是整数。也许还有另一种加载文本文件数据的方法,它不默认为浮动?
-
好吧,阅读年份时同时使用
dtype=np.int,以及ax.set_xticks(range(min(year), max(year)+1, 2)或ax.set_xticks(range(int(min(year)), int(max(year))+1, 2) -
瞧!你是我的英雄
标签: python matplotlib plot integer axes