亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

僅在頻率變化時繪制日期

僅在頻率變化時繪制日期

MMTTMM 2021-11-16 16:10:56
我一直在嘗試根據頻率繪制日期。這是我的數據集的樣子:2017-07-04,132018-04-11,132017-08-17,132017-08-30,132018-04-26,122018-01-03,122017-07-05,112017-06-21,11這是我試過的代碼:with open('test.csv', 'w') as f:    writer = csv.writer(f)    writer.writerows(temp)### Extract data from CSV ###with open('test.csv', 'r') as n:    reader = csv.reader(n)    dates = []    freq = []    for row in reader:        dates.append(row[0])        freq.append(row[1])fig = plt.figure()graph = fig.add_subplot(111)# Plot the data as a red line with round markersgraph.plot(dates, freq, 'r-o')graph.set_xticks(dates)graph.set_xticklabels(    [dates])plt.show()這是我得到的結果:xlabels 非?;靵y。我希望標簽中的日期僅在值發生變化時顯示。我不知道該怎么做。幫助表示贊賞。謝謝!
查看完整描述

1 回答

?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

首先,我強烈建議您使用該pandas庫及其DataFrame對象來處理您的數據。它有一些非常有用的功能,例如read_csv,可以為您節省一些工作。


為了讓 matplotlib 空間更合理,您需要將日期轉換為datetime對象(而不是將日期存儲為字符串)。


在這里,我將使用 Pandas 讀取您的數據,解析日期并按日期排序:


import pandas as pd

import matplotlib.pyplot as plt

import numpy as np


# Read data

df = pd.read_csv('/path/to/test.csv', names=['date', 'freq'], parse_dates=['date'])

# Sort by date

df.sort_values(by='date', inplace=True)

然后您可以繼續繪制數據(您需要最新版本的熊貓來自動處理日期):


fig, ax = plt.subplots(1, 1)


# Plot date against frequency

ax.plot(df['date'], df['freq'], 'r-o')


# Rotate the tick labels

ax.tick_params(axis='x', rotation=45)


fig.tight_layout()

如果你只是想顯示的日期時的頻率變化,下面將工作


ax.set_xticks(df.loc[np.diff(df['freq']) != 0, 'date'])

雖然我不會推薦它(不等間距看起來很亂)


查看完整回答
反對 回復 2021-11-16
  • 1 回答
  • 0 關注
  • 210 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號