python 删除轴上预先存在的标签时设置特定刻度标签

rqdpfwrv  于 2022-11-28  发布在  Python
关注(0)|答案(1)|浏览(97)

我需要在某个分笔成交点位置上设置特定的分笔成交点标签,同时删除先前存在的标签。

具体来说,x轴上的标签是股票价值的日期,我想删除这些标签,并为每个月设置一个标签。
开盘价最高价最低价收盘价成交量2019年6月24日86.78 87.11 86.06 86.55 1507828 2019年6月25日86.63 87.23 84.81 85.06 2481284 2019年6月26日85.38 85.81 84.75 85.33 2034693 6月27日2019年6月28日2019年7月1日2019年7月2日2019年7月3日

import pandas as pd
import matplotlib.pyplot as plt

def main():

    df = pd.read_excel('DatosUnited.xlsx')

    date = df['Date']
    closePrice = df['Close/Price']

    
    plt.xlabel('Tiempo')
    plt.ylabel('Valor de las acciones (USD) ')
    plt.title('Este mes')
    plt.plot(date,closePrice,'r')

    plt.show()



main()

我尝试删除所有刻度标签,并设置一个新刻度标签列表,但未能将它们设置在所需位置

gzjq41n4

gzjq41n41#

像这样的怎么样?

import pandas as pd
import datetime
import matplotlib.dates as mdates
import matplotlib.pyplot as plt

df = pd.DataFrame({'Date': {0: '6/24/2019', 1: '6/25/2019', 2: '6/26/2019', 3: '6/27/2019', 4: '6/28/2019', 5: '7/1/2019', 6: '7/2/2019', 7: '7/3/2019'}, 'Open': {0: 86.78, 1: 86.63, 2: 85.38, 3: 85.65, 4: 86.66, 5: 88.84, 6: 89.21, 7: 89.14}, 'High': {0: 87.11, 1: 87.23, 2: 85.81, 3: 86.86, 4: 87.74, 5: 89.72, 6: 90.0, 7: 91.08}, 'Low': {0: 86.06, 1: 84.81, 2: 84.75, 3: 85.13, 4: 86.66, 5: 87.77, 6: 87.95, 7: 89.14}, 'Close/Price': {0: 86.55, 1: 85.06, 2: 85.33, 3: 86.43, 4: 87.55, 5: 88.45, 6: 88.87, 7: 90.67}, 'Volume': {0: 1507828, 1: 2481284, 2: 2034693, 3: 1394847, 4: 3025379, 5: 4017249, 6: 2237183, 7: 1647124}})

date = [datetime.datetime.strptime(d, '%m/%d/%Y') for d in df['Date']]
closePrice = df['Close/Price']

fig, ax = plt.subplots()
plt.xlabel('Tiempo')
plt.ylabel('Valor de las acciones (USD) ')
plt.title('Este mes')
plt.plot(date,closePrice,'r')

locator = mdates.AutoDateLocator()
formatter = mdates.ConciseDateFormatter(locator)
ax.xaxis.set_major_locator(locator)
ax.xaxis.set_major_formatter(formatter)

plt.show()

提供以下示例数据:

你可以用MonthLocator()替换AutoDateLocator()来得到月份,但是对于示例数据来说,这看起来并不是很好。

相关问题