gpt4 book ai didi

python - 如何防止数据在 matplotlib 散点图中拥挤在一起?

转载 作者:太空宇宙 更新时间:2023-11-03 19:51:30 26 4
gpt4 key购买 nike

我运行我的代码,然后得到下图。

figure_1

当我修改图形选项的值时,我得到了我想要的输出。

figure_2

我应该如何处理我的代码?如何在代码中设置左值和右值?

from matplotlib import pyplot as plt
import matplotlib.dates as mdate
import pandas as pd
import numpy as np
import datetime
from decimal import Decimal
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()

data =[(datetime.date(2019, 12, 23), Decimal('0.3230'), Decimal('157.89')),
(datetime.date(2019, 12, 23), Decimal('0.1680'), Decimal('157.74')),
(datetime.date(2019, 12, 23), Decimal('0.1440'), Decimal('152.78')),
(datetime.date(2019, 12, 24), Decimal('0.1070'), Decimal('157.94')),
(datetime.date(2019, 12, 24), Decimal('0.6420'), Decimal('159.81')),
(datetime.date(2019, 12, 25), Decimal('0.0980'), Decimal('115.31')),
(datetime.date(2019, 12, 26), Decimal('0.0830'), Decimal('122.89')),
(datetime.date(2019, 12, 26), Decimal('0.1600'), Decimal('171.88')),
(datetime.date(2019, 12, 27), Decimal('0.1710'), Decimal('161.40')),
(datetime.date(2019, 12, 30), Decimal('0.0590'), Decimal('161.02')),
(datetime.date(2019, 12, 30), Decimal('0.4150'), Decimal('168.19')),
(datetime.date(2019, 12, 31), Decimal('0.1150'), Decimal('167.83')),
(datetime.date(2020, 1, 2), Decimal('0.0790'), Decimal('192.41')),
(datetime.date(2020, 1, 3), Decimal('0.4930'), Decimal('216.43')),
(datetime.date(2020, 1, 3), Decimal('0.2640'), Decimal('154.92')),
(datetime.date(2020, 1, 3), Decimal('0.1980'), Decimal('211.11')),
(datetime.date(2020, 1, 10), Decimal('0.2173'), Decimal('248.64')),
(datetime.date(2020, 1, 13), Decimal('1.3202'), Decimal('196.34')),
(datetime.date(2020, 1, 14), Decimal('0.0423'), Decimal('198.30')),
(datetime.date(2020, 1, 16), Decimal('0.0236'), Decimal('296.56')),
(datetime.date(2020, 1, 16), Decimal('0.0937'), Decimal('304.03'))]

df = pd.DataFrame(data)
df.rename(columns={0:'a',1:'b',2:'c'},inplace=True)
x = df.a
y = df.c
fig,ax=plt.subplots()
ax.scatter(x,y,facecolor='g',alpha=0.5)
ax.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d'))
ax.set_xticks(x.drop_duplicates())
fig.autofmt_xdate()
plt.show()

最佳答案

您需要直接使用ax.set_xlim设置x轴限制。您可以从 x.drop_duplicates() 返回的数据帧中获取最大值和最小值,然后像这样填充一个小的时间增量

# ...
_x = x.drop_duplicates()
ax.set_xticks(_x)
# Create a 2-day timedelta and set the limits from the min and max with td as padding
td = datetime.timedelta(days=2)
ax.set_xlim([min(_x)-td, max(_x)+td])
fig.autofmt_xdate()
plt.show()

这会给你

enter image description here

我建议还设置一个更宽的数字,即

fig, ax = plt.subplots(figsize=(10, 5))

这会给你

enter image description here

关于python - 如何防止数据在 matplotlib 散点图中拥挤在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59815635/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com