streamlit pyplot 子图失真
streamlit pyplot subplot distortion
我正在用子图绘制图像,它在 Jupyter(或“纯 python”)和 Streamlit 中看起来不同。
例如,如果我有一个 (2 x 2) 子图,只有 1 张图像,它将是 在 Streamlit 中拉伸。
我怎样才能关闭这样的拉伸?
没有 Streamlit 的地块:
Streamlit 中的情节
代码:
import streamlit as st
import numpy as np
import matplotlib.pyplot as plt
imgs = [np.random.random((50,50)) for _ in range(4)]
fig1 = plt.figure(figsize = (3,3))
plt.subplot(2, 2, 1);
plt.imshow(imgs[0]);
plt.axis('off');
plt.subplot(2, 2, 2);
plt.imshow(imgs[1]);
plt.axis('off');
plt.subplot(2, 2, 3);
plt.imshow(imgs[2]);
plt.axis('off');
plt.subplot(2, 2, 4);
plt.imshow(imgs[3]);
plt.axis('off');
plt.subplots_adjust(wspace=.025, hspace=.025)
st.pyplot(fig1)
fig2 = plt.figure(figsize = (3,3))
plt.subplot(2, 2, 1);
plt.imshow(imgs[0]);
plt.axis('off');
st.pyplot(fig2)
您可以使用 plt.savefig(...) 保存图像,然后使用 st.image 显示图像,为了更高分辨率,您可以插入 dpi 参数。
import streamlit as st
import numpy as np
import matplotlib.pyplot as plt
import os
imgs = [np.random.random((50,50)) for _ in range(4)]
fig1 = plt.figure(figsize = (3,3))
plt.subplot(2, 2, 1);
plt.imshow(imgs[0]);
plt.axis('off');
plt.subplot(2, 2, 2);
plt.imshow(imgs[1]);
plt.axis('off');
plt.subplot(2, 2, 3);
plt.imshow(imgs[2]);
plt.axis('off');
plt.subplot(2, 2, 4);
plt.imshow(imgs[3]);
plt.axis('off');
plt.subplots_adjust(wspace=.025, hspace=.025)
# save image, display it, and delete after usage.
plt.savefig('x',dpi=400)
st.image('x.png')
os.remove('x.png')
fig2 = plt.figure(figsize = (3,3))
plt.subplot(2, 2, 1);
plt.imshow(imgs[0]);
plt.axis('off');
# save second image, display it, and delete after usage.
plt.savefig('test',dpi=400)
st.image('test.png')
os.remove('test.png')
我正在用子图绘制图像,它在 Jupyter(或“纯 python”)和 Streamlit 中看起来不同。
例如,如果我有一个 (2 x 2) 子图,只有 1 张图像,它将是 在 Streamlit 中拉伸。
我怎样才能关闭这样的拉伸?
没有 Streamlit 的地块:
Streamlit 中的情节
代码:
import streamlit as st
import numpy as np
import matplotlib.pyplot as plt
imgs = [np.random.random((50,50)) for _ in range(4)]
fig1 = plt.figure(figsize = (3,3))
plt.subplot(2, 2, 1);
plt.imshow(imgs[0]);
plt.axis('off');
plt.subplot(2, 2, 2);
plt.imshow(imgs[1]);
plt.axis('off');
plt.subplot(2, 2, 3);
plt.imshow(imgs[2]);
plt.axis('off');
plt.subplot(2, 2, 4);
plt.imshow(imgs[3]);
plt.axis('off');
plt.subplots_adjust(wspace=.025, hspace=.025)
st.pyplot(fig1)
fig2 = plt.figure(figsize = (3,3))
plt.subplot(2, 2, 1);
plt.imshow(imgs[0]);
plt.axis('off');
st.pyplot(fig2)
您可以使用 plt.savefig(...) 保存图像,然后使用 st.image 显示图像,为了更高分辨率,您可以插入 dpi 参数。
import streamlit as st
import numpy as np
import matplotlib.pyplot as plt
import os
imgs = [np.random.random((50,50)) for _ in range(4)]
fig1 = plt.figure(figsize = (3,3))
plt.subplot(2, 2, 1);
plt.imshow(imgs[0]);
plt.axis('off');
plt.subplot(2, 2, 2);
plt.imshow(imgs[1]);
plt.axis('off');
plt.subplot(2, 2, 3);
plt.imshow(imgs[2]);
plt.axis('off');
plt.subplot(2, 2, 4);
plt.imshow(imgs[3]);
plt.axis('off');
plt.subplots_adjust(wspace=.025, hspace=.025)
# save image, display it, and delete after usage.
plt.savefig('x',dpi=400)
st.image('x.png')
os.remove('x.png')
fig2 = plt.figure(figsize = (3,3))
plt.subplot(2, 2, 1);
plt.imshow(imgs[0]);
plt.axis('off');
# save second image, display it, and delete after usage.
plt.savefig('test',dpi=400)
st.image('test.png')
os.remove('test.png')