python openpyxl + VBA控制Excel批量绘制两两散点图
尽管R语言是进行生态环境数据探索的首选,但Excel无疑在我们搜集、整理以及初步数据探索中依旧有着十分重要的作用。绘制环境因子间的两两散点图是探索因子关系的常见步骤,当环境因子较多时scatterplotMatrix()显得力不从心,当因子间的关系不是简单的线性关系时,corrplot()也不能完全展示数据间的关系。这里我们用python的openpyxl包控制excel绘制11个变量间的两两散点图。
效果如下:
主要步骤:
- python计算两两相关性P值
- python的openpyxl包控制excel绘制11个变量间的两两散点图,并将P值写入excel表格;
- VBA将P值添入散点图,并修改为默认格式;
步骤代码
- 步骤1的python代码
xie = pd.read_excel("./Desktop/xie.xlsx")
p = np.zeros(55)
l=0
for i in range(0,10):for j in range(i+1,11):x=np.array(xie[xie.columns[i]])y=np.array(xie[xie.columns[j]])fit = stats.linregress(x,y)p[l] = fit.pvalueprint([l,p[l]])l=l+1
- 步骤2的python代码:
from openpyxl import load_workbook
from openpyxl.chart import (ScatterChart,Reference,Series,legend,
)
from openpyxl.chart.text import (RichText,Text)
from openpyxl.drawing.text import (Paragraph, ParagraphProperties, CharacterProperties, Font,TextField
)
from openpyxl.styles import Border
from openpyxl.chart.trendline import (Trendline,TrendlineLabel)
from openpyxl.chart.title import title_makerwb = load_workbook('./Desktop/xie.xlsx')
ws = wb.active
k=0
for i in range(1,11):for j in range(i+1,12): chart = ScatterChart()chart.height = 6.42chart.width = 9.57chart.legend = Nonexv = Reference(ws, min_col=i, min_row=2, max_row=80)#print(i)yv = Reference(ws, min_col=j, min_row=2, max_row=80)series = Series(values = yv,xvalues = xv,title_from_data=False)chart.series.append(series)chart.title = ws.cell(1,i).value+" vs "+ws.cell(1,j).valuetitle_font = Font(typeface='Calibri')cp = CharacterProperties(latin=title_font, sz=900)cp2 = CharacterProperties(latin=title_font, sz=1400,b=False)pp = ParagraphProperties(defRPr=cp)pp2 = ParagraphProperties(defRPr=cp2)rtp = RichText(p=[Paragraph(pPr=pp, endParaRPr=cp)])chart.x_axis.txPr = rtpchart.y_axis.txPr = rtpchart.title.text.rich.paragraphs[0].pPr = pp2s1 = chart.series[0]s1.marker.symbol = "circle"#s1.marker.graphicalProperties.solidFill = "FF0000" # Marker filling#s1.marker.graphicalProperties.line.solidFill = "FF0000" # Marker outlines1.graphicalProperties.line.noFill = True # hide liness1.trendline=Trendline(trendlineType = 'linear',dispEq=True,dispRSqr=True)chartPosition = "N"+str(7*k+1)mycell = ws.cell(row=k+1, column=25)mycell.value = p[k]k=k+1ws.add_chart(chart, chartPosition)
wb.save("./Desktop/xie2.xlsx")
- 步骤3的VBA代码:
Sub addPvalue()For i = 1 To 55ActiveSheet.ChartObjects(Index:=i).Activatea = ActiveChart.FullSeriesCollection(1).Trendlines(1).DataLabel.TextActiveChart.FullSeriesCollection(1).Trendlines(1).DataLabel.Text = (a & ";" & Cells(i + 1, 22))ActiveChart.ChartStyle = 240Next i
End Sub
测试数据和可参考如下链接
python openpyxl + excel VBA批量绘制两两散点图
python openpyxl + VBA控制Excel批量绘制两两散点图相关推荐
- Python VS VBA 读取Excel中的文本框组件
作者:小小明 Python读取Excel的文本框 基本需求 今天看到了一个很奇怪的问题,要读取Excel文件的文本框中的文本,例如这种: 本以为openxlpy可以读取,但查看openxlpy官方文档 ...
- python—openpyxl自动化操作Excel格式文件(6~10课)
我有点懒直接截图的 仅个人笔记 复习需要 !!!!!! 文章目录 前言 一.安装库openpyxl 二.python打开及读取Excel表格内容 1.Excel表格基本术语 2.打开及读取表格数据 2 ...
- Python:openpyxl实现在excel绘制扇形图
1.代码 import openpyxl from openpyxl.chart import PieChart, Referencedef excel_ReportAll(excel_path):# ...
- Python对比VBA实现excel表格合并与拆分
1.Excel表格合并 我们在日常工作中经常会导出一些数据,但是这些数据较大可能是按照某个分类形成的单独表格,比如每一天的数据,每个品牌的数据等. 但是,我们在进行数据分析的时候可能往往需要对这些数据 ...
- Python 自动化办公:Excel 自动绘制图表
今天的主题是 Excel,相信大家都比较熟悉吧.而且我相信,大家在日常使用 Excel 的时候,肯定会遇到很多重复繁琐的工作,因为我也同样遇到过.这个时候我通常都会思考下,有没有办法让繁琐的事情变得简 ...
- python openpyxl 自动设置excel列宽及行高,单元格对对齐方式
import pandas as pd from openpyxl import load_workbook from openpyxl.utils import get_column_letter ...
- Python自动化办公之 Excel 自动绘制图表
今天的主题是 Excel,相信大家都比较熟悉吧.而且我相信,大家在日常使用 Excel 的时候,肯定会遇到很多重复繁琐的工作,因为我也同样遇到过.这个时候我通常都会思考下,有没有办法让繁琐的事情变得简 ...
- 3 基于matplotlib的python数据可视化——导入Excel数据绘制组合图表
目录 1.制作双折线图 2.组合图表制作 3.为组合图表添加并设置次坐标轴 销售业绩表1下载链接:https://download.csdn.net/download/weixin_44940488/ ...
- c调用python gensim包_Jupyter Notebooks嵌入Excel并使用Python替代VBA宏
以前,Excel和Python Jupyter Notebook之间我们只能选择一个.但是现在随着PyXLL-Jupyter软件包的推出,可以将两者一起使用. 在本文中,我将向你展示如何设置在Exce ...
最新文章
- SQL 语句中 where 条件后 写上1=1 是什么意思
- idea设置开发方式
- android SharedPreferences实现用户的注册和保存账号密码
- 安卓imageView加载MYSQL图片_Android调用相机拍摄照片并显示到 ImageView控件中
- 【读书笔记】泛型接口 和 泛型方法
- MySQL主从同步校验与重新同步
- 建立http服务器,基于名称的虚拟主机
- linux中的ip地址、子网掩码、端口
- mysql 批量替换 所有表_[收藏]批量替换一个数据库中所有表中所有记录
- linux-目录结构
- NetBeans 时事通讯(刊号 # 74 - Sep 30, 2009)
- Moscow Pre-Finals Workshop 2020 - Legilimens+Coffee Chicken Contest (XX Open Cup, Grand Prix of Nanj
- python模糊匹配_python 字符串模糊匹配 Fuzzywuzzy
- 用计算机怎样弄出告白密码,数字表白密码 表白密码大全
- BLDC无刷直流电机
- HDMI接口之HPD(热拔插)
- 腾讯2021校园招聘技术类编程题汇总
- 快速计算delay函数中for循环延时程序占用的时间
- 福建师范大学网络教育学院 计算机应用基础 第三次作业,福建师范大学网络教育学院_《计算机应用基础》第三次作业...
- python 列表删除元素
热门文章
- 中科大少年班,官方公布48名新生名单,有人因偶像曹原,有人只是不想经历高三...
- 别再说自己不会JVM了,看完这篇能和面试官扯上半小时
- Android自定义view实现刮刮乐
- 通过锁装置实例了解SOLIDWORKS motion实体接触及马达的高级用法
- Android判断屏幕状态与屏幕解锁和锁定
- 【华为OD机试 】 免单统计(C++ Java JavaScript Python)
- 使用python控制仪器【控制苏州联讯源表SMU】
- 1.Ubuntu Linux 简介
- SpringCloud升级之路2020.0.x版-43.为何 SpringCloudGateway 中会有链路信息丢失
- ROS小乌龟turtlesim详解