irpas技术客

python绘图技巧(高清图)_彩色海绵_python怎么画图

网络 2424

一、绘制普通的多线图。

除了常规的样式坐标名字以及调节大小等,还有一些解决的特殊的,但是需要的问题。

1、 注意我们经常保存的画会留白很大,解决了这个问题

2、中文乱码

3、图像模糊,清晰度不够也解决了

import cv2 from pylab import * # 支持中文 mpl.rcParams['font.sans-serif'] = ['SimHei'] img2 = cv2.imread("img/fenge-1-1.jpg") img4 = cv2.imread("img/fenge-1-1-0.06.jpg") img5 = cv2.imread("img/fenge-1-1-0.02.jpg") img6 = cv2.imread("img/fenge-1-1-0.1.jpg") img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2HSV) h1, s, img2 = cv2.split(img2) # 看单通道的 img_array2 = np.array(img2) # 把图像转成数组格式img = np.asarray(image) mean2 = np.average(img_array2, axis=0) # 按列求均值 img4 = cv2.cvtColor(img4, cv2.COLOR_BGR2HSV) h1, s, img4 = cv2.split(img4) # 看单通道的 img_array4 = np.array(img4) # 把图像转成数组格式img = np.asarray(image) mean4 = np.average(img_array4, axis=0) # 按列求均值 img5 = cv2.cvtColor(img5, cv2.COLOR_BGR2HSV) h1, s, img5 = cv2.split(img5) # 看单通道的 img_array5 = np.array(img5) # 把图像转成数组格式img = np.asarray(image) mean5 = np.average(img_array5, axis=0) # 按列求均值 img6 = cv2.cvtColor(img6, cv2.COLOR_BGR2HSV) h1, s, img6 = cv2.split(img6) # 看单通道的 img_array6 = np.array(img6) # 把图像转成数组格式img = np.asarray(image) mean6 = np.average(img_array6, axis=0) # 按列求均值 # plt.plot(mean2,c="g",label=u'a=std/(255*2)') # plt.plot(mean4,linestyle=":",c="r",label=u'a=0.06') # plt.plot(mean5,linestyle="-.",c="b",label=u'a=0.02') # plt.plot(mean6,linestyle="--",c="k",label=u'a=0.1') plt.plot(mean2,linewidth=1,c="g",label=u'a=std/(255*2)') plt.plot(mean4,linewidth=1,linestyle=":",c="r",label=u'a=0.06') plt.plot(mean5,linewidth=1,linestyle="--",c="b",label=u'a=0.02') plt.plot(mean6,linewidth=1,linestyle="-.",c="darkorange",label=u'a=0.1') plt.legend(loc='upper right',prop={'family':'SimHei','size':9}) # 让图例生效 # plt.legend(loc='upper right',size=5) # 让图例生效lower plt.tick_params(direction='in') # 刻度向里 plt.xlim([0, 255]) # 横坐标范围 plt.ylim([100, 150]) # 横坐标范围 plt.ylim([100, 150]) # 横坐标范围 # plt.grid(True) ##增加格点 plt.axis('tight') # 坐标轴适应数据量 axis 设置坐标轴 plt.xlabel("图像1宽度/(像素)", size=10) plt.ylabel("列平均灰度值", size=10) # plt.title("a不同取值的L*(x,y)的一维曲线图") # 标题 #方法一 # plt.rcParams['savefig.dpi'] = 800 #图片像素 # # # # plt.rcParams['figure.dpi'] = 800 #分辨率 # # # # # plt.axis('off')可以去坐标轴 # # plt.savefig('img/name-2.jpg') # 方法二 #可以直接设置保存好的图的清晰度,大小 # plt.set_size_inches(6, 6) #设置保存图片的尺寸 plt.savefig('img/name-1.jpg', dpi=800,bbox_inches='tight') #bbox_inches使生成的图片周围的空白缩小 #在 plt.show() 之前调用 plt.savefig(),否则出现空白 plt.show() cv2.waitKey(0) cv2.destroyAllWindows()

二、注意:另外一种设置刻度方向的方法:

import matplotlib.pyplot as plt

plt.rcParams['xtick.direction'] = 'in' ?# 将x周的刻度线方向设置向内 plt.rcParams['ytick.direction'] = 'in' ?# 将y轴的刻度方向设置向内

plt.rcParams['xtick.direction'] = 'out' ?# 将x周的刻度线方向设置向外 plt.rcParams['ytick.direction'] = 'out' ?# 将y轴的刻度方向设置向内外

plt.rcParams['xtick.direction'] = 'inout' ?# 将x周的刻度线方向设置向中间 plt.rcParams['ytick.direction'] = 'inout' ?# 将y轴的刻度方向设置向中间

?三、颜色样式

Python matplotlib 作图(一、线条颜色、类型设置)_qq_17576739的博客-CSDN博客_python画图线条粗细

?四、绘制3D图(秀一下) import cv2 from pylab import * # 支持中文 mpl.rcParams['font.sans-serif'] = ['SimHei'] from IPython.core.pylabtools import figsize # import figsize img = cv2.imread("img/1-2.jpg", 0) # print(img.shape)#可以查看是200*200 3通道还是单通道 cv2.imshow('img',img) height, width= img.shape[:2] print(height, width) img = cv2.resize(img, (height,width)) xx, yy = np.mgrid[0:img.shape[0], 0:img.shape[1]] # create the figure fig = plt.figure() ax = fig.gca(projection='3d') # ax.invert_yaxis() ax.invert_xaxis() ax.plot_surface(xx, yy, img,rstride=1, cstride=1, cmap=plt.cm.gray,linewidth=0) #plt.cm.jet ax.set_zlabel("图像灰度值") ax.set_xlabel('图像2宽度/(像素)') ax.set_ylabel('图像2高度/(像素)') ax.set_ylim(bottom=0)#y轴从0开始 ax.set_zlim(bottom=0)#z轴从0开始 # plt.xlabel("图像1宽度/(像素)", size=10) # plt.ylabel("图像1高度/(像素)", size=10) # plt.tick_params(direction='in') # 刻度向里 plt.rcParams['xtick.direction']='in' # plt.rcParams['ytick.direction']='in' # figsize(8, 4) # 设置 figsize # plt.rcParams['savefig.dpi'] = 600 #图片像素 # plt.rcParams['figure.dpi'] = 600 #分辨率 # plt.savefig('img/3D-1-2.jpg') #2、保存图片的大小 fig.set_size_inches(6, 6) #设置保存图片的尺寸 plt.savefig('img/3D-1-2.jpg', dpi=600,bbox_inches='tight') #bbox_inches使生成的图片周围的空白缩小 #在 plt.show() 之前调用 plt.savefig(),否则出现空白 plt.show() cv2.waitKey() cv2.destroyAllWindows()# 销毁所有窗口

三维坐标的和二维还是有区别的。

?五、双y轴的应用

关键的代码:

# plt.xticks(x, x, rotation=45)#横坐标刻度旋转45度 plt.xticks([])#不显示横坐标刻度 plt.xlim([0.5, 4.5]) #横坐标范围 plt.ylim([0, 1]) #坐标范围 plt.xlabel(u"原始图像 MSRCR CALHE 本文算法") # X轴标签 plt.title("不同算法的评价指标值的变化") # 标题 # plt.plot(greyScale_map, color='r') plt.tick_params(direction='in') # 刻度向里 # 绘制另一Y轴 plt.twinx() plt.plot(x, y1, marker='*', mec='g', mfc='w', ms=10,label=u'信息熵曲线图') plt.plot(x1, y4, marker='.', ms=10, label=u'PSNR曲线图')

?

?


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #python怎么画图 #代码python绘图技巧高清图