日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python openpyxl + VBA控制Excel批量绘制两两散点图

發(fā)布時間:2024/5/14 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python openpyxl + VBA控制Excel批量绘制两两散点图 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

??盡管R語言是進(jìn)行生態(tài)環(huán)境數(shù)據(jù)探索的首選,但Excel無疑在我們搜集、整理以及初步數(shù)據(jù)探索中依舊有著十分重要的作用。繪制環(huán)境因子間的兩兩散點圖是探索因子關(guān)系的常見步驟,當(dāng)環(huán)境因子較多時scatterplotMatrix()顯得力不從心,當(dāng)因子間的關(guān)系不是簡單的線性關(guān)系時,corrplot()也不能完全展示數(shù)據(jù)間的關(guān)系。這里我們用python的openpyxl包控制excel繪制11個變量間的兩兩散點圖。

??效果如下:

主要步驟:

  • python計算兩兩相關(guān)性P值
  • python的openpyxl包控制excel繪制11個變量間的兩兩散點圖,并將P值寫入excel表格;
  • VBA將P值添入散點圖,并修改為默認(rèn)格式;
  • 步驟代碼

  • 步驟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

    測試數(shù)據(jù)和可參考如下鏈接
    python openpyxl + excel VBA批量繪制兩兩散點圖

    總結(jié)

    以上是生活随笔為你收集整理的python openpyxl + VBA控制Excel批量绘制两两散点图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。