Python matplotlib聚合像素内系列的多个点
我有一个索引为datetime的系列ts,其分辨率为1s;这个时间序列跨越23小时。我试图用一个配置参数chart_sec(一个图表中显示的秒数)在多个图表上绘制此图,固定dpi=20;分辨率可能不足以绘制图表中ts的每个点Python matplotlib聚合像素内系列的多个点,python,matplotlib,Python,Matplotlib,我有一个索引为datetime的系列ts,其分辨率为1s;这个时间序列跨越23小时。我试图用一个配置参数chart_sec(一个图表中显示的秒数)在多个图表上绘制此图,固定dpi=20;分辨率可能不足以绘制图表中ts的每个点 import pyplot as plt ax = plt.subplot() dates = [dt.to_datetime() for dt in ts.index] ax.plot_date(dates, ts, fmt='k-', color='grey') plt
import pyplot as plt
ax = plt.subplot()
dates = [dt.to_datetime() for dt in ts.index]
ax.plot_date(dates, ts, fmt='k-', color='grey')
plt.savefig(fname, dpi=20)
问题1,我不知道使用上述代码绘制的是哪个值(它是像素中第一个点的值还是最后一个点的值?)
问题2,如果我想对一个像素内的点的值求和,怎么做 如果您需要区分这些点,一个想法是以大尺寸和高dpi保存图形。我从您的示例中猜出了一些数据
import pandas as pd
import matplotlib.pyplot as plt
ts = pd.DataFrame(50*pd.np.random.rand(7200)+pd.np.array(range(7200)),
index=pd.DatetimeIndex(freq='s',start='01-01-2016',periods=7200))
plt.figure(figsize=(35,35))
# will be a <matplotlib.figure.Figure object>
dates = [dt.to_datetime() for dt in ts.index]
plt.plot_date(dates, ts, fmt='k-', ms=0, color='grey')
# will be a [<matplotlib.lines.Line2D object>]
plt.savefig('hires.png', dpi=600)
将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
ts=pd.DataFrame(50*pd.np.rand.rand(7200)+pd.np.array(range(7200)),
索引=pd.DatetimeIndex(频率=s',开始时间=01-01-2016',期间=7200))
plt.图(figsize=(35,35))
#将是一个
日期=[dt.to_datetime()表示ts.index中的dt]
plt.plot_date(日期,ts,fmt='k-',ms=0,颜色='grey')
#将是[]
plt.savefig('hires.png',dpi=600)
这将生成一个接近3MB的png文件,当放大查看时,它看起来像一条有点嘈杂的直线,但当您放大到100%时,您可以看到各个点,如下所示:
仍然不能很好地区分,但您可以使用图片大小与dpi来满足您的个人需求
注意:如果需要在普通matplotlib地物窗口中查看(而不是保存),可以放大。您还可以保存放大视图,这样可以准确地保存屏幕上显示的内容。如果需要区分这些点,可以将图形保存为大尺寸和高dpi。我从您的示例中猜出了一些数据
import pandas as pd
import matplotlib.pyplot as plt
ts = pd.DataFrame(50*pd.np.random.rand(7200)+pd.np.array(range(7200)),
index=pd.DatetimeIndex(freq='s',start='01-01-2016',periods=7200))
plt.figure(figsize=(35,35))
# will be a <matplotlib.figure.Figure object>
dates = [dt.to_datetime() for dt in ts.index]
plt.plot_date(dates, ts, fmt='k-', ms=0, color='grey')
# will be a [<matplotlib.lines.Line2D object>]
plt.savefig('hires.png', dpi=600)
将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
ts=pd.DataFrame(50*pd.np.rand.rand(7200)+pd.np.array(range(7200)),
索引=pd.DatetimeIndex(频率=s',开始时间=01-01-2016',期间=7200))
plt.图(figsize=(35,35))
#将是一个
日期=[dt.to_datetime()表示ts.index中的dt]
plt.plot_date(日期,ts,fmt='k-',ms=0,颜色='grey')
#将是[]
plt.savefig('hires.png',dpi=600)
这将生成一个接近3MB的png文件,当放大查看时,它看起来像一条有点嘈杂的直线,但当您放大到100%时,您可以看到各个点,如下所示:
仍然不能很好地区分,但您可以使用图片大小与dpi来满足您的个人需求
注意:如果需要在普通matplotlib地物窗口中查看(而不是保存),可以放大。您还可以保存放大视图,这样可以准确地保存您在屏幕上看到的内容。您好,我不太清楚您所说的“一个像素中有多个点”是什么意思。你应该得到一张7200点的图表——根据缩放的不同,你可能无法清楚地解决这个问题。您是否有可以发布的示例
ts
和示例输出?如果您试图保存一个图形并能够区分每个点,一个技巧是使用较大的图形大小(例如plt.figure(figsize=(70,70))
)并保存为向量类型(pdf)或高dpi。如果您在标准matplotlib窗口中查看,可以放大。@JRichardSnape感谢您的回复。我编辑了这个问题;savefig具有固定的dpi,可能不足以绘制图表中ts的每个点。希望这能澄清我的问题。回答没问题。当您说“savefig有固定的dpi”时,您的意思是在应用程序中不能将dpi从20更改为20吗?matplotlib库中没有任何东西可以阻止您使用非常高(我认为是任意高)的dpi。你能不能换一下尺寸?如果你不能改变figsize或dpi,我确实看到了问题。我认为dpi最初会决定fig的大小;不太熟悉matplotlib。数字大小是固定的,但我可以更改dpi。我怎样才能正确设置显示图表的dpi?嗨,我不太清楚“一个像素中有多个点”是什么意思。你应该得到一张7200点的图表——根据缩放的不同,你可能无法清楚地解决这个问题。您是否有可以发布的示例ts
和示例输出?如果您试图保存一个图形并能够区分每个点,一个技巧是使用较大的图形大小(例如plt.figure(figsize=(70,70))
)并保存为向量类型(pdf)或高dpi。如果您在标准matplotlib窗口中查看,可以放大。@JRichardSnape感谢您的回复。我编辑了这个问题;savefig具有固定的dpi,可能不足以绘制图表中ts的每个点。希望这能澄清我的问题。回答没问题。当您说“savefig有固定的dpi”时,您的意思是在应用程序中不能将dpi从20更改为20吗?matplotlib库中没有任何东西可以阻止您使用非常高(我认为是任意高)的dpi。你能不能换一下尺寸?如果你不能改变figsize或dpi,我确实看到了问题。我认为dpi最初会决定fig的大小;不太熟悉matplotlib。数字大小是固定的,但我可以更改dpi。如何正确设置显示图表的dpi?