首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python绘图用128x250像素保存为png?

Python绘图用128x250像素保存为png?
EN

Stack Overflow用户
提问于 2021-12-17 20:07:53
回答 1查看 100关注 0票数 1

对于eink显示,它需要使用确切的128x250像素的png文件。

在一个小小的温湿度记录仪上,我得到的结果如下:

代码语言:javascript
复制
Date,Time,Temperature,Humidity
12.12.2021,17:02,23.8,48.9
12.12.2021,17:03,22.8,45.1
12.12.2021,17:04,22.7,44.5
12.12.2021,17:05,22.6,44.6
12.12.2021,17:06,22.6,45.4
12.12.2021,17:07,22.5,45.1
13.12.2021,13:02,23.8,48.9
13.12.2021,13:03,22.8,45.1
13.12.2021,13:04,22.7,44.5
13.12.2021,13:05,22.6,44.6
13.12.2021,13:06,22.6,45.4
13.12.2021,13:07,22.5,45.1
14.12.2021,19:02,23.8,48.9
14.12.2021,19:03,22.8,45.1
14.12.2021,19:04,22.7,44.5
14.12.2021,19:05,22.6,44.6
14.12.2021,19:06,22.6,45.4
14.12.2021,19:07,22.5,45.1

对于python,有一天我做了一些简单的绘图,比如(我是python的一个核心):

代码语言:javascript
复制
from pandas import read_csv as pd
from matplotlib import pyplot as plt

Raspilog = pd('Temp.csv', header=0, squeeze=True)
Raspilog_CDate = Raspilog[Raspilog.Date == "13.12.2021"]


fig, ax = plt.subplots()
ax.plot(Raspilog_CDate.Time, Raspilog_CDate.Temperature, color="red")
ax2 = ax.twinx()
ax2.set(ylim=(0, 100))
ax2.plot(Raspilog_CDate.Time, Raspilog_CDate.Humidity, color="black")

plt.show()

结果如下:

,但我需要它是128x250像素,并保存为png

我在互联网上读到了很多关于DPI和英寸等的信息。在我看来,没有简单的解决办法:(有人知道如何做到这一点吗?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-18 02:01:38

您需要稍微使用dpi (“每英寸点”:每英寸中的像素数)和figsize (以英寸为单位)。图形需要足够大,以使文本无花果有点合理。请注意,250x128非常小,因此阅读文本将是困难的。

下面的代码是对一些可能的dpis进行实验的结果。50 dpi看上去不错。

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

df_str = '''Date,Time,Temperature,Humidity
12.12.2021,17:02,23.8,48.9
12.12.2021,17:03,22.8,45.1
12.12.2021,17:04,22.7,44.5
12.12.2021,17:05,22.6,44.6
12.12.2021,17:06,22.6,45.4
12.12.2021,17:07,22.5,45.1
13.12.2021,13:02,23.8,48.9
13.12.2021,13:03,22.8,45.1
13.12.2021,13:04,22.7,44.5
13.12.2021,13:05,22.6,44.6
13.12.2021,13:06,22.6,45.4
13.12.2021,13:07,22.5,45.1
14.12.2021,19:02,23.8,48.9
14.12.2021,19:03,22.8,45.1
14.12.2021,19:04,22.7,44.5
14.12.2021,19:05,22.6,44.6
14.12.2021,19:06,22.6,45.4
14.12.2021,19:07,22.5,45.1'''
df = pd.read_csv(StringIO(df_str))

png_width, png_height = 250, 128
png_dpi = 50
fig, ax = plt.subplots(figsize=(png_width / png_dpi, png_height / png_dpi))
ax.plot(df.Time, df.Temperature, color="red")
ax2 = ax.twinx()
ax2.plot(df.Time, df.Humidity, color="black")
ax2.set_ylim(0, 100)

ax.set_xticks(np.arange(0, len(df), 2))
ax.set_xticks(np.arange(0, len(df)), minor=True)
ax.set_xticklabels(df.Time[0::2])
ax.tick_params(axis='x', which='both', length=4)
plt.tight_layout()
fig.savefig('Test250x128.png', dpi=png_dpi)

plt.show()

这将生成一个确切的250 x128的png:

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

https://stackoverflow.com/questions/70398397

复制
相关文章

相似问题

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