How to write to a smart contract with infura web3 provider

Hi all,
I’m a fresh person to the block chain world and these days i’m learning about smart contracts and etherium. So i have wrote a simple smart contract in solidity which was a decentralized voting app and I have used the infura as web3 provider. Retrieve data from smart contract was successful but my question is how do I write data to the contract. I knew that write to the blockchain cost gas and I already installed the metamask extension. How I use these things together to write a vote to the voting app using web3js. If anyone can help me please.
Here the smart contract…

Welcome to the blockchain space! In general, to write to an Ethereum smart contract you are submitting a transaction to the Ethereum network. This is a good write-up I refer people to that would like to better understand the details of an eth_call method invocation. It is part of a larger series on Ethereum smart contracts. I highly encourage you to check out the whole thing. Best of luck.

Did you intend to have a link in “this is a good writeup”?

@JayM check this out https://blog.infura.io/deploying-smart-contracts-managing-transactions-ethereum/?utm_source=social&utm_medium=community&utm_campaign=Tutorials