首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matplotlib图的可视化效果更好

matplotlib图的可视化效果更好
EN

Stack Overflow用户
提问于 2019-07-30 16:47:13
回答 1查看 258关注 0票数 0

我想在我的论文中包括一个图(文档将是标准的a4页面pdf),我有两个时间序列的数据,两者都是以百分比表示的连续值。

这两个时间序列都超过了一年,没有周日,因此每个时间序列大约有310个数据点。

我试着带着这样的东西,

代码语言:javascript
复制
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


ts = day_agg_plan_temp.set_index('Date')
ts = ts['2018-01-01': '2019-01-01']

plt.figure(figsize=(20,15))


ax1 = ts.label.plot(grid=True, label='Ground Truth', marker='.')
ax2 = ts.pred.plot(grid=True, label='Prediction', marker='.')

plt.legend()
plt.show()

结果是:

这并不是很吸引人,因为发生了太多的事情,我想指出蓝色和橙色线上每个数据点的差异。

所以我的问题是,有没有比缩小日期范围更好的方法(这是我真的不想要的,因为这个图已经是覆盖近3年的实际时间序列的一个片段)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-30 21:19:12

下面是一些代码,这些代码使用Fractional Brownian motion生成数据,使用Savitzky–Golay filter计算趋势(但使用最适合您的案例研究的方法),并以用户可以同时清楚地看到原始数据和趋势的方式绘制它。

代码语言:javascript
复制
from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import savgol_filter

# Generating some Random Data
def brownian(x0, n, dt, delta, out=None):
    x0 = np.asarray(x0)
    r = norm.rvs(size=x0.shape + (n,), scale=delta * sqrt(dt))
    if out is None:
        out = np.empty(r.shape)
    np.cumsum(r, axis=-1, out=out)
    out += np.expand_dims(x0, axis=-1)
    return out

delta = 2
T = 10.0
N = 500
dt = T/N
m = 2
x = np.empty((m,N+1))
x[:, 0] = 50
brownian(x[:,0], N, dt, delta, out=x[:,1:])
t = np.linspace(0.0, N*dt, N+1)

# Obtaining the trend using some arbitrary filter
y1 = savgol_filter(x[0], 51, 3)
y2 = savgol_filter(x[1], 51, 3)

# Plotting the raw data (transparent)
plt.plot(t, x[0], color="red", alpha=0.2)
plt.plot(t, x[1], color="blue", alpha=0.2)

# Plotting the trend data (opaque)
plt.plot(t, y1, color="red")
plt.plot(t, y2, color="blue")

# Calling the plot
plt.show()

结果是这样的:

我的观点是,通过使用颜色(或透明度),您可以使一些数据看起来就像在背景中一样,而其他数据(通常是最相关的)就像出现在前景中一样。这是一种UX技术(如模糊、变暗或使背景变浅)。

如果数据的垂直可变性不足以清楚地分隔集合,也可以使用线条宽度(或样式)。在你的情况下,我认为没有必要这样做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57267720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档