Popular New Releases in Gaming
godot
3.4.4-stable
phaser
Phaser v3.55.2
libgdx
1.10.0
Proton
Proton 7.0-2
aseprite
Aseprite v1.3-beta14
Popular Libraries in Gaming
by godotengine c++
47538
NOASSERTION
Godot Engine – Multi-platform 2D and 3D game engine
by photonstorm javascript
30320
MIT
Phaser is a fun, free and fast 2D game framework for making HTML5 games for desktop and mobile web browsers, supporting Canvas and WebGL rendering.
by libgdx java
19612
NOASSERTION
Desktop/Android/HTML5/iOS Java game development framework
by ValveSoftware c++
16918
NOASSERTION
Compatibility tool for Steam Play based on Wine and additional components
by aseprite c++
16876
Animated sprite editor & pixel art tool (Windows, macOS, Linux)
by BabylonJS typescript
16566
Apache-2.0
Babylon.js is a powerful, beautiful, simple, and open game and rendering engine packed into a friendly JavaScript framework.
by bevyengine rust
15512
NOASSERTION
A refreshingly simple data-driven game engine built in Rust
by cocos2d c++
15461
Cocos2d-x is a suite of open-source, cross-platform, game-development tools used by millions of developers all over the world.
by Anuken java
14308
GPL-3.0
The automation tower defense game
Trending New libraries in Gaming
by bevyengine rust
15512
NOASSERTION
A refreshingly simple data-driven game engine built in Rust
by tobspr javascript
4851
GPL-3.0
shapez.io is an open source base building game inspired by factorio! Available on web & steam
by jynew csharp
4611
NOASSERTION
金庸群侠传3D重制版
by o3de c++
4538
NOASSERTION
Open 3D Engine (O3DE) is an Apache 2.0-licensed multi-platform 3D engine that enables developers and content creators to build AAA games, cinema-quality 3D worlds, and high-fidelity simulations without any fees or commercial obligations.
by UnityTechnologies csharp
3966
Apache-2.0
Unity Open Project #1: Chop Chop
by FlaxEngine c++
3219
NOASSERTION
Flax Engine – multi-platform 3D game engine
by CaffeineMC java
3168
LGPL-3.0
A Fabric mod designed to improve frame rates and reduce micro-stutter
by derrod python
2928
GPL-3.0
Legendary - A free and open-source replacement for the Epic Games Launcher
by Heroic-Games-Launcher typescript
2830
GPL-3.0
A Native GOG and Epic Games Launcher for Linux, Windows and Mac.
Top Authors in Gaming
1
157 Libraries
1392
2
110 Libraries
10096
3
63 Libraries
33694
4
56 Libraries
1041
5
51 Libraries
12412
6
39 Libraries
206
7
33 Libraries
149
8
33 Libraries
243
9
31 Libraries
214
10
29 Libraries
479
1
157 Libraries
1392
2
110 Libraries
10096
3
63 Libraries
33694
4
56 Libraries
1041
5
51 Libraries
12412
6
39 Libraries
206
7
33 Libraries
149
8
33 Libraries
243
9
31 Libraries
214
10
29 Libraries
479
Trending Kits in Gaming
Python is an object-oriented programming language. Python can do anything almost any other language can do, at comparable speeds. This kit has some simple to use exercises in Python to help someone new to learn how to program in Python and get started with their journey.
For a detailed tutorial on installing & executing the solution as well as learning resources including training & certification opportunities, please visit the OpenWeaver Community
Python Repositories with Basic Example Exercises
Basic python CLI programs as examples. This list has programs useful for someone who is a beginner and also someone willing to go advance level.
Some Python Games for Practice
Support
If you need help using this kit, you may reach us at the OpenWeaver Community.
Angry Birds python game is a Finnish action-based media franchise. It is created by Rovio Entertainment.
The game series focuses on a flock of birds referred to by the same name who try to save their eggs from the green-colored pigs. Angry Birds game is written in python using Pygame and Pymunk which are open-source modules specifically intended to help you make games and other multimedia applications. Pygame can be used to load background images, sounds, and buttons, which makes the UI interactions more efficient. Pymunk is best when you need 2d physics from python which can be used for demos or simulations. Pymunk is basically built on top of the 2D physics library Chipmunk.
Troubleshooting
- While running batch file, if you encounter Windows protection alert, select More info --> Run anyway
- During kit installer, if you encounter Windows security alert, click Allow
For a detailed tutorial on installing & executing the solution as well as learning resources including training & certification opportunities, please visit the OpenWeaver Community
Development Environment
VSCode is used for development and debugging. VSCode is used to get a typical experience of IDE for developers.
Gaming Libraries
Pygame helps in providing computer graphics and audio libraries.
Pymunk is a easy-to-use pythonic 2d physics library that can be used whenever you need 2d rigid body physics from Python.
Support
If you need help using this kit, you may reach us at the OpenWeaver Community.
A Tower Defense Game between Humans and Aliens. Kill as much as aliens as you can to upgrade and discover new humans.
Development Environment
VSCode is used for development and debugging. VSCode is used to get a typical experience of IDE for developers.
Gaming Libraries
Pygame helps in providing computer graphics and audio libraries.
Pymunk is an easy-to-use pythonic 2d physics library that can be used whenever you need 2d rigid body physics from Python.
Troubleshooting
- While running batch file, if you encounter Windows protection alert, select More info --> Run anyway
- During kit installer, if you encounter Windows security alert, click Allow
Support
If you need help to use this kit, you can email us at kandi.support@openweaver.com or direct message us on Twitter Message @OpenWeaverInc.
The chess game is one of the most popular games of all time.The object of the game is to checkmate the opponent's king. This kit includes a full chess engine, a GUI engine, and an AI engine. The AI engine utilizes the minimax and alpha-beta pruning algorithms.
Development Environment
VSCode is used for development and debugging. VSCode is used to get a typical experience of IDE for developers.
Gaming Libraries
Pygame helps in providing computer graphics and audio libraries.
Troubleshooting
- While running batch file, if you encounter Windows protection alert, select More info --> Run anyway.
- During kit installer, if you encounter Windows security alert, click Allow.
Support
f you need help to use this kit, you can email us at kandi.support@openweaver.com or direct message us on Twitter Message @OpenWeaverInc.
Super Mario is frequently cited as one of the greatest video games of all time. This kit is a classic remake of Super Mario Bros. developed in python. This kit includes only level 1-1.
Development Environment
VSCode is used for development, debugging and are used to get a typical experience of IDE for developers.
Gaming Libraries
Pygame helps in providing computer graphics and audio libraries. PyTMX helps to load maps for games.
Support
If you need help to use this kit, you can email us at kandi.support@openweaver.com or direct message us on Twitter Message @OpenWeaverInc.
C# Networking Libraries are used for various purposes. You can make a Chat App, a Multiplayer Game, a File Sharing App, a Database App, and a Streaming App.
C# networking libraries are the collection of classes and functions used to develop C# programming language network applications. These libraries provide functionality such as networking protocols, data transfer, encryption, and data storage. Examples of C# networking libraries include the .NET Framework Network Classes, System.Net, and OpenNETCF.
Let us have a look at C# networking libraries in detail below.
mRemoteNG
- Supports many protocols such as RDP, VNC, SSH, Telnet, HTTP/HTTPS, and ICA/HDX.
- Rich plugin system to extend the functionality of the application.
- Powerful scripting engine to automate common tasks.
websocket-sharp
- Supports the latest websocket protocol specifications.
- Supports compression of websocket frames using the Per-Message Deflate extension.
- Actively maintained and regularly updated with new features and bug fixes.
protobuf-net
- Serialization and Deserialization.
- Compact Binary Format.
- Supports Multiple Platforms.
DotNetty
- Event-driven API.
- Protocol Agnostic.
- Built-in Pipeline.
NETworkManager
- Built-in packet inspection tool that can be used to troubleshoot and diagnose network problems.
- Powerful tools for developers, such as a network traffic simulator.
- Allows users to configure, monitor, and control their network traffic quickly.
Mirror
- High-performance, extensible, and lightweight.
- Designed to be platform-agnostic.
- Supports Unity’s built-in Networking.
surging
- High-performance TCP/IP networking stack.
- Pluggable architecture that allows developers to easily customize and extend the library to meet their specific needs.
- Provides a range of built-in security features.
BruteShark
- Supports many protocols such as HTTP, FTP, SMTP, DNS, and SSL/TLS.
- Integrated packet capture engine to capture network traffic and save it in various formats.
- Monitor multiple networks simultaneously and can detect MITM attacks.
LiteNetLib
- Supports both client-server and peer-to-peer architectures.
- Provides reliable UDP messaging with the help of its own packet fragmentation and reassembly mechanism.
- Supports automatic NAT punchthrough for connecting to peers behind a firewall or router.
MQTTnet
- Supports SSL/TLS encryption and authentication.
- Provides native support for Windows, Linux, and macOS platforms.
- Includes an integrated logging framework.
LOIC
- Allows the user to select from a variety of attack types.
- Includes a graphical user interface.
- Includes a feature called “Hive Mind”, which allows users to join a “hive” and send requests in unison with other users.
SteamKit
- Support for various languages, including C#, C++, and JavaScript.
- Highly extensible and can be used to create custom network protocols for games.
- Various functions are designed to facilitate communication between applications and the Steam network.
NetCoreServer
- Flexible API.
- Robust Security.
- Cross-Platform Compatibility.
DotNetOpenAuth
- Provides strong cryptography algorithms and secure communications protocols.
- Written in C#, it is easy to port to other platforms.
- Allows developers to extend the library for their specific use cases.
lidgren-network-gen3
- Binary Serialization.
- Peer-to-peer Networking.
- Reliability.
BeetleX
- Built-in support for Cross-Origin Resource Sharing (CORS).
- Deep integration with the .Net Core platform.
- Provides an asynchronous, non-blocking programming model with no callbacks and no threads.
BedrockFramework
- Provides a distributed object model that allows for objects to be shared across different instances without creating extra copies.
- Provides a unique set of tools for debugging and monitoring network traffic and performance.
- Allows for a more robust and reliable system than other libraries written in other languages.
EvilFOCA
- Spoofing allows users to hide their IP address when making network requests.
- The port scanning feature allows users to scan for open ports on a network.
- The mapping feature allows users to map a network and identify various devices, services, and connections.
FAQ:
1. What is a network application framework? How can C sharp networking libraries assist in building them?
A network application framework simplifies the development of applications that use networks. It provides tools and libraries. These frameworks offer developers pre-built components and structures to handle various networking tasks. The tasks may involve saving data. They may also include communicating between clients and servers. Additionally, tasks may involve managing errors. Developers can focus on the app's logic and features without worrying about networking.
C# provides several networking libraries that can help build network application frameworks. You can benefit from these libraries by creating network application frameworks.
- Abstraction: It abstracts away low-level networking complexities. It allows developers to focus on higher-level application logic.
- Security: It offers built-in security features. It implements secure communication channels and data transmission.
- Consistency: Established libraries provide a strong foundation for your network application. It reduces the likelihood of bugs and vulnerabilities.
- Productivity: By using pre-built components, developers can accelerate the development process. It reduces the amount of code they need to write from scratch.
- Scalability: Some frameworks handle large numbers of clients. It offers scalability features out of the box.
2. Can C# networking libraries create Steam network applications?
You can use C# networking libraries to make apps that connect with the Steam network. Steam is a digital distribution platform developed by Valve Corporation. It is primarily used for distributing and managing video games and related content.
It provides an API called the Steamworks API. It allows developers to integrate their applications with the Steam platform. To make the networking parts of your app, use networking libraries and the Steamworks API. You can use the Steamworks API in two ways: with interop mechanisms or C# libraries from third parties.
3. How do I choose the right networking library using C Sharp language for my project?
Consider your project's needs when choosing a networking library for your C# project. Here is a step-by-step guide to help you make an informed decision:
- Define Project Requirements
- Consider Existing Expertise
- Scalability and Performance
- Supported Protocols and Features
- Community and Documentation
- Ease of Use and Learning Curve
- Cross-platform compatibility
- Security considerations
- Third-party Integration
- Longevity and Maintenance
- Licensing and Compatibility
- Performance Benchmarks and Reviews
- Experiment and Prototype
- Flexibility for future growth
4. How does the .NET Core Library deal with WebSocket connections?
The ASP.NET Core framework manages WebSocket connections in the .NET Core library. This framework has built-in support for working with WebSocket connections. WebSocket is a communication protocol. A client and a server can communicate using one TCP connection. It makes creating and managing WebSocket connections in your C# networking apps easier.
The .NET Core library handles WebSocket connections like this:
- Using ASP.NET Core
- Creating WebSocket Endpoints
- WebSocket Handler
- Handling WebSocket Connections
- Receiving and Sending Messages
- Integration with ASP.NET Routing
- Middleware and Services
- Full-Duplex Communication
5. What challenges come with socket programming When building applications with C# Networking Libraries?
Using socket programming libraries to build applications is difficult because it is complex. Socket programming is challenging because it involves low-level networking and many complexities. Developers have more control over the networking but must handle these challenges.
Here are some common challenges:
- Complexity and Learning Curve
- Synchronization and Concurrency
- Error Handling and Resilience
- Data Serialization
- Buffer Management
- Protocol Design and Parsing
- Resource Management
- Security Concerns
- Firewalls and NAT Traversal
- Platform Differences
- Testing and Debugging
- Scalability
- Performance Optimization
- IPv4 and IPv6 Compatibility
- Real-time Communication
3D graphics are becoming increasingly important, enabling developers to build immersive and interactive user experiences.
JavaScript has evolved as a popular language for creating such events. These libraries enable a wide range of applications, including gaming, e-commerce, education, and more, and content from Three.js, widely regarded as the industry standard for browser-based 3D graphics, to Babylon.js, which provides a powerful game engine and physics system, to PlayCanvas, which enables collaborative, browser-based game development.
Here are 8 of the best JavaScript 3D libraries 2023 developers can use for an immersive 3D experience.
Three.js:
- Shows 3D-printed object previews.
- Helps create virtual concerts and events.
- Helpful in product animations for marketing.
Babylon.js:
- Helps in product design and prototyping.
- Helps do virtual makeup try-on.
- Allows 3D printing model creation and optimization.
cesium:
- Helpful in real-time traffic monitoring and visualization.
- Helps in weather and environmental monitoring.
- Helps monitor geospatial data and provides its analysis and visualization.
Whs.js:
- Helps create interactive virtual art galleries.
- Shows 3D product catalogs and configurators for fashion.
- Helps in virtual reality amusement park rides.
Cannon.js:
- Helps with physics-based interactive educational videos.
- Helps create interactive roller coaster and amusement park ride simulations.
- Allows collaborative remote prototyping for mechanical engineering.
Physics.js:
- Creates interactive kinetic art installations.
- Helps create physics-based educational games for kids.
- Helps create interactive science museum exhibits.
PlayCanvas-ar:
- Helps in collaborative remote design and prototyping.
- Helps do 3D product customization and personalization.
- Has immersive language learning simulations.
Turbulenz_jslib:
- Helps in interactive educational simulations for mathematics and statistics.
- Creates virtual reality art galleries.
- Allows immersive virtual reality movie theaters.
You can use these libraries in JavaScript to build features such as animations, physical movements, collision detection, and sound effects.
Open-source JavaScript game development libraries provide various tools and frameworks for game developers of all levels. Whether you're looking to create a simple casual game or a complex 3D game, there is an open-source JavaScript library that can help. These libraries support both 2D and 3D game development and are known for their ease of use and flexibility. Using JavaScript libraries, you can create rich 3D worlds in your games with compelling motion and various moving objects. Also, you can incorporate built-in physics and real-time lighting effects in the games.
We have handpicked top and trending JavaScript libraries for game development based on popularity, licensing, and unique features to help you build video gaming applications:
Impact:
- Used mainly for 2D game development with HTML5 and JavaScript
- Provides various tools, including sprite animations, particle effects, and physics.
- Includes powerful plugins for adding extra functionality and a 3D environment to your games.
Babylon:
- Used for its incredibly powerful Web rendering capabilities.
- Provides tools such as physics-based collisions and particle effects.
- Supports a wide range of 3D formats.
Phaser:
- Used for building HTML5 games for desktop and mobile web browsers.
- Provides features such as sprite animation, particle effects, and physics.
- Offers WebGL and Canvas rendering.
PixiJS
- Used for building beautiful web and visual experiences in games.
- It is a fast and lightweight 2D rendering library for HTML5 games.
- Includes powerful features such as sprite animations and a fast WebGL renderer.
Engine/PlayCanvas:
- Used for writing and testing code, setting up different scenes, and exporting the games.
- It’s a cloud-based game engine for creating 3D HTML5 games.
- Provides a range of performance optimizations.
- Also offers VR compatibility.
MelonJS:
- Used generally for 2D game development.
- It’s a lightweight yet powerful HTML5 game engine.
- Provides a simple and flexible set of tools for building 2D games.
- Offers support for sprite animations, tilemaps, and physics-based collisions.
Godot:
- Used for creating 2D and 3D games.
- Provides a set of tools, including a visual editor and a scripting API.
- Supports a wide range of platforms.
p5.js:
- Used typically in User Interface and Graphics applications.
- Focuses on creative coding for artists, designers, educators, and beginners.
- Provides simple and intuitive tools for building interactive animations and games.
- Offers support for 2D graphics with input handling and sound.
One of the most intellectual indoor games which keep the player engaged is Sudoku. Sudoku is a classic logic-based puzzle game. It requires a keen focus of mind and a logical vision. It is a number-placement game where you will be given a 9*9 grid which contains sub-grids of nine 3*3 matrices. The ultimate goal is to fill a grid with numbers from 1 to 9 in such a way each of its rows and columns contains each number exactly once. The outgrowth of technology in the last decade brought this intriguing game online. How about you creating this brilliant Sudoku game? How about building this complex game in a single-page application like React? Sounds interesting! Isn't it? Let's get into it with the help of the following libraries. This kit aids the development of Sudoku games using React by following the below steps. 1. Choose a development environment 2. Create a 2D array 3. Set up a track to look into the game's progress 4. Set up a track to determine the number of conflicts left 5. Create a component to indicate the connection between cells 6. Write a script to indicate connections using signals 7. Manage user's input 8. Create a component to drag and drop the numbers 9. Set up the tools to perform operations 10. Do the scripting to track the history of actions done
Development Environment
React is used for development. With React, it becomes easy and simple to develop an interactive UI. The state management in React makes the process of developing an application more flexible.
Graphical user interface
GUIs act as intermediaries to communicate with your device through UI components. In React, building UI components gets easy with the aid of CSS. React can be used for desktop applications and mobile applications as well.
Puzzle Solver
The puzzle-solving is simplified by creating cell components that throw signals indicating the relationship or connection between similar cell components using different colors.
Puzzle generator
Generating a puzzle is one of the key steps in creating a logic-based game. State management in React optimizes the puzzle generation.
Scripting is a critical part of Unity 2D racing. It is a crucial element that handles the input from a player and then holds an object accordingly.
Playing games has always been fun, just like coding! There is something about games, which grabs everyone towards it with its fascinating visuals, engaging obstacles to reach victory. You could have played plenty of games like these which were terrific, but how about creating your very own game? How about designing a racing game? Here is one of the most exciting games called Unity 2D Racing. Unity 2D Racing is a single-player game in which a player controls the car on a road path. Some hazards like clouds will pass by the road to make the game bit tough for the player. Besides, a player must also be cautious about not getting into the potholes that appear on the road. Listed below are the best libraries that can be reused. This kit aids the development of the Unity 2D racing game by following the below steps : 1. Pick a Development Environment! 2. Begin with Unity 2D project 3. Set up background sprite 4. Create a script to do the background scroll 5. Add cloud materials 6. Create a 2D controller 7. Sort the layers 8. Create a script for the controller 9. Add Canvas in the UI 10. Create a script for managing the UI 11. Design a Graphic Raycaster in Unity.
Controller for our unity 2d racing game
Scripting is one of the critical parts of Unity 2D racing, in which we do scripting for controlling an object. A controller is a crucial element that handles the input from a player and then holds an object in a game accordingly.
Development Environment
Unity Hub is used for development. Unity is generally a game engine framework that allows you to create two-dimensional(2D) and three-dimensional (3D) games. C# programming language has been used for scripting in Unity.
Graphic Raycaster
The graphic Raycaster will decide on the end of the game. Generally, Raycaster inspects the graphics to determine if any objects got hit by the canvas. If an object hits the hazard, the Graphic Raycaster will block that object and finish the game.
Flappy Bird is an arcade-style game. It was initially released as a mobile game while tapping the screen to make the bird fly. Later, the game's pc version was released, where the Bird will be controlled using the up key or the space bar. If Bird hits on the pipes or the screen edges, the game ends, and the player needs to restart. Flappy Bird can fly the Bird as far as you can without hitting a pipe. The player is tasked with navigating Faby through pairs of pipes with equally sized gaps placed at random heights. Try to play as long as possible, score as many points as you can!. Following are the steps to be followed for build Flappy Bird Game, 1. Graphics Setup 2. Game Logic 3. Creating Input Controls 4. Generating Sound effects & Display Scores 5. Multi-player
Multi-player
Flappy bird is a single-player game, but it's possible to have multiplayer by using below libraries. Players will play on their game field one who gets more scores will win the game.
Graphic Designs & Game logic
Graphic designs are used in a flappy game to build an image of the player (bird), background, pipe, base and for displaying messages. Game logic and Graphic designs are build by using below libraries.
Creating Input Controls
Key mapper is an open-source library that allows users to use a key or combination of keys to perform a specific action(fly), which can be used for navigating.
Sound effects & Scores
Sound effects are used while the bird hits the pipe, generating scores for every move of a bird and a Game over by sfb & FlapPyBird libraries . Using flairfly library, scores can be calculated by the number of pipes crossed.
Pinball is an arcade game where a player uses paddles to launch the ball into the table. It prevents the ball from falling past your flippers if possible.
Interact with dynamic elements of the table like blockers, bumpers, flippers, gates, holes, LEDs, plungers, rollovers, slingshots, spinners, targets, ramps, and pipes to increase your score and get multipliers. This game comes with three balls. Use the arrow keys to hit the left or right flippers. Following are the steps to be followed to build Your Pinball Game, 1. Graphic designs 2. Sound effects 3. User Interface 4. Pinball controller 5. Leaderboard 6. 3D Pinball game
Graphic Designs
Listed below libraries help in creating the best graphic design for gaming applications, which is used in design tables and infrastructure in pinball.
User Interface
The below user interface libraries are used for different platforms like android, Pc.
Sound effects
Sound effects are used for ball hitting, dropping, paddles, and also starting & ending of the game. These effects can be achieved by using the below libraries.
Pinball Controller
The below libraries are used to control the spring to start, left and right paddles to prevent ball drop.
Leaderboard
The below libraries are used to display scores, the history of the player, player name. It has a database connection to save the scores and create a leaderboard.
3D Pinball Game
The pinball game can be built in 3D by using the below library.
As we are in the digital era, real-time video games are ruling the young generation. Tank games are one of the addictive games of this generation.
The objective of this game is to destroy the enemy's tank with our tank, which will decrease the energy level of the opponent. Similarly, our energy level will be reduced when the opponent attacks us with their tank. The attacking capacity ultimately depends on the energy level. The more is the energy level, the high is the attacking capacity. Following are the steps to be followed for building Tank Fight Game, 1.Graphic design & Sound effects 2.Firing and exploiting the tanks 3.Customize control over keyboard 4.Multi-player 5.3D Tank game
Customize control over keyboard
Key mapper is an open-source library that allows users to use a key or combination of keys to perform a specific action, which can be used for navigating and shooting. The below libraries can help you to create your control.
Graphic design & Sound effects
Listed below libraries help in creating the best graphic design and sound effects for gaming applications using python, C#, JavaScript, which can be used to design tanks, animate the movement of tanks, explosion of tanks, and display energy level bars.
Firing and exploiting the tanks
Random module, an open-source library, generates a random number provided the range, which can be used for firing and exploiting the tanks, decides the playing turn at the start of every game.
3D Tank game
The tank game can be built in 3D by using the below library.
Multi-player
Tank game can be played as multiplayer by using the below libraries. Multiplayers will play on the game field they shoot each other. The more is the energy level. The high is the attacking capacity.
Tetris has established itself as a famous game since the early video games. Even though the game looks simple requires intelligence and skills to play.
The gameplay contains tiles or tetrominoes of different shapes and a game field grid. The game's objective is to position the tiles in the game field, which fills the grid. The disappearing line will grant points. Accumulated points help users to move a level up. Once the game is over, the final score will be displayed to the user. Following steps to be followed to build your own Tetris game, 1.Create Blocks for Tetris 2.Graphic designs 3.Multi-player Tetris 4.Creating customized Game field 5.2D Tetris 6.3D Tetris 7.Control keys
Create Blocks & Graphics
Listed below libraries help in creating the best graphic design for gaming applications can help the moving tiles across the game field, selecting colors for tiles, making different shapes of tiles using different sizes of arrays, and matrix rotation. In the case of a single-player game, the game gets over when all blocks are formed such that no lines are disappearing.
2D Tetris Game
2D games are titles with only two axes of motion. Typically, these are "flat" games where you can move left and right up and down. You can create a 2D Tetris game using the below libraries.
3D Tetris Game
Players control multiple falling blocks, positioning and rotating them to clear layers in a three-dimensional environment similar to Tetris gameplay. You can create a 3D Tetris game using the below libraries.
Creating own Game field
The libraries listed below help to create custom matrices for the Tetris game.
Multi-player Tetris
Listed below libraries helps to build a multi-player Tetris game, two players will play on their game field one who gets more scores will win the battle.
Control Keys
Key mapper is an open-source that allows users to use a key or combination of keys to perform a rotation and move, which can be used for navigating. You can create your keys to play using the below libraries.
Java creates various applications, from web and workplace to desktop and mobile. It is renowned for its object-oriented architecture and simplicity.
It has a sizable and vibrant community that offers a plethora of libraries and frameworks for various uses. The idea behind the number-guessing game is for the player to guess a number from a range. Assuming the player enters a valid number that falls within the range, if that number is less than, more significant than, or equal to, the player will know whether it is greater, lower, or equal so he can proceed further. To win, the player must predict the number within the allotted attempts in this game. A player wins the game if they correctly predict the number; else, they lose.
Here is an example of how you might implement this game:
Fig 1: Preview of code snippet in IDE.
Fig 2: Preview of the output that you will get on running this code from your IDE. Example usage where I choose to guess 513.
Code
Instructions
Follow the steps carefully to get the output easily:
- Copy the code using the "Copy" button above, and paste it in a Java file in your IDE(IntelliJ Preferable).
- Run the file to generate the output.
I hope you found this useful.
I found this code snippet by searching for "Guessing Number Game using Java" in kandi. You can try any such use case!
Environment Tested
I tested this solution in the following versions. Be mindful of changes when working with other versions.
- The solution is created in IntelliJ IDE and Java jdk-'11.0.17'.
- The solution is tested on Java 11.0.17.
Using this solution, we are able to develop an guessing number game using java with simple steps. This process also facilities an easy way to use, hassle-free method to create a hands-on working version of code which would help us to create an guessing number game using Java.
Support
- For any support on kandi solution kits, please use the chat
- For further learning resources, visit the Open Weaver Community learning page.
Build custom programs to create character generators for video games and applications by using these open-source character generator libraries.
Character Generator is used to generate characters in video games, smartphone and desktop applications, websites, etc. in various different patterns. You can create 3D and 2D characters for your games and application by using a variety of models, textures and animations. With the help of character generator, you can allow the user to determine aspects of a digital character like attributes, skills, strengths and weaknesses, life events, etc. Also, you can allow them to add animation, text, as well as audio and video effects.
Mentioned below are some of the best and most trending reusable character generator libraries that you can implement in your next project:
Are you struggling to make impossible decisions? You might have some help. My eight-year-old daughter was playing with the Magic 8-Ball and told me she makes her important decisions based on it! I tried it, and it was pretty amusing and even sometimes helpful. Reminded me of the Staples Easy Button. The Magic 8-Ball was invented in 1946 by Albert C. Carter and Abe Bookman and is currently manufactured by Mattel. Carter was inspired by a spirit writing device used by his mother, a clairvoyant. Interestingly over the 76 years, the Magic 8-Ball has undergone very minimal changes. If you can't get your hand on one, there are many virtual ones that use a pseudorandom number generator (PRNG) on the same 20 possible answers. If you are looking for critical decisions, then in the Magic 8-Ball style - "Don't count on it." The kandi kit shares public libraries that simulate the Magic 8-Ball, PRNG, interesting Magic 8-Ball scripts for developer responses, and a DIY electronic device.
Loading and playing background music in Pygame means that you can load music or sound files into your Pygame program, and then play them while the game is running. This could be used to create a more immersive gaming experience or to add a soundtrack to your game.
Pygame is a cross-platform set of Python modules designed for writing video games. It includes computer graphics and sound libraries designed to be used with the Python programming language. Pygame is highly portable and runs on nearly every platform and operating system. It is one of the most popular libraries for game development with Python.
Here is an example of loading and playing background music in Pygame
Code
In this solution, we use mixer class of Pygame.
Instructions
Follow the steps carefully to get the output easily.
- Install Jupyter Notebook on your computer.
- Open terminal and install the required libraries with following commands.
- Install Pygame - pip install pygame.
- Copy the code using the "Copy" button above, and paste it into your IDE's Python file.
- Import pygame.
- Add pygame.mixer.init() for initializing mixer.
- Add your audio file.
- Run the file to get the output.
I hope you found this useful. I have added the link to dependent libraries, version information in the following sections.
I found this code snippet by searching for "Loading and playing background music in Pygame" in kandi. You can try any such use case!
Dependent Libraries
If you do not have Pygame that is required to run this code, you can install it by clicking on the above link and copying the pip Install command from the Pygame page in kandi.
You can search for any dependent library on kandi like pygame
Environment Tested
I tested this solution in the following versions. Be mindful of changes when working with other versions.
- The solution is created in Python 3.9.6
- The solution is tested on pygame version 2.3.0
Support
- For any support on kandi solution kits, please use the chat
- For further learning resources, visit the Open Weaver Community learning page.
Here are some famous Java Game Development Libraries. Some of the use cases of Java Game Development Libraries include creating various types of games such as 2D and 3D Games, Educational Games, Mobile Games, or Multiplayer Games.
Java game development libraries are collections of pre-built code that allow developers to quickly and easily create complex games. These libraries provide a wide range of features, such as animations, audio, graphics, physics, artificial intelligence, user inputs, and much more. By using these libraries, developers can create high-quality games in less time than it would take to build them from scratch.
Let us look at the libraries in detail below.
libgdx
- Cross-platform game development library.
- Built-in tools such as a particle editor, a sprite editor, and UI designer.
- Supports 3D game development.
jmonkeyengine
- Offers a flexible scene graph to provide an intuitive and powerful way to create, arrange, and animate 3D objects.
- Built-in physics engine that allows developers to easily add physics-driven elements into their games.
- Has a large and active community of developers.
lwjgl
- Platform-independent.
- No bugs.
- Allows developers to create and run applications written in multiple languages.
playn
- Provides a unified game services API.
- Provides a game state management system.
- Enables developers to build rich, interactive experiences with advanced graphics support.
jbox2d
- Allows for more realistic and complex motion simulation.
- A unique get/set interface for setting and reading the properties of objects.
- A broad set of features, including collision detection, etc.
slick2d
- Easy to develop 2D games quickly and efficiently.
- Wide features such as a GUI library, audio support, and more.
- Provides an OpenGL backend for hardware accelerated graphics and Cross-platform compatibility.
AndEngine
- Offers a wide variety of graphical effects and shader support.
- Has built-in support for multiplayer gaming.
- Has built-in support for virtual reality.
corona_sdk
- Features the Corona Simulator, which allows developers to quickly test and debug their games on multiple platforms without having to deploy them.
- Based on the Lua scripting language.
- Offers an extensive library of plugins.
java-sdk
- Support for the JavaFX library for creating modern, dynamic user interfaces.
- Comprehensive documentation with tutorials and sample code.
- High-level APIs for advanced game AI and physics.
Stellar
- Advanced networking capabilities.
- Comprehensive audio support.
- Support for 2D and 3D graphics.
afroman-client
- Supports both DirectX and OpenGL graphics APIs.
- Fully compatible with other popular game development libraries.
- Provides support for multi-threaded programming.
Here are some of the C++ Game Development Libraries. Some use cases of C++ Game Development Libraries include the Creation of 2D and 3D Games, Game Engine Development, Optimization of Existing Games, and Game Prototyping.
C++ game development libraries are a set of libraries or frameworks, usually written in the C++ programming language, that provide tools and functions to help developers create video games and other interactive applications. They typically provide functions such as graphics and audio libraries, physics and collision detection libraries, AI libraries, and game-specific libraries.
Let us look at the libraries in detail below.
SFML (Simple and Fast Multimedia Library)
- Provides an easy-to-use interface for creating multithreaded games with high-performance graphics.
- Written in C++ and has bindings for various languages, such as C#, Java, and Python.
- Cross-platform offers features such as audio, networking, and input support.
SDL (Simple DirectMedia Layer)
- Low-level access to system hardware such as audio, mouse, joystick, and graphics.
- High portability since the code can be easily adapted to different platforms.
- Provides a comprehensive set of APIs that makes game development simpler and easier.
Ogre 3D (Object-Oriented Graphics Rendering Engine)
- Has a powerful rendering engine that is optimized for both DirectX and OpenGL.
- Has a robust and versatile material system.
- Has an intuitive and user-friendly UI system that makes it easy to prototype and develop games.
UnrealEnginePython
- Allows developers to easily access and modify the powerful features of UE4.
- Allows developers to create custom tools and plugins for the UE4 editor.
- Has advanced graphics capabilities, allowing developers to create stunning visuals for their games.
Cocos2D-x
- Allows developers to build their games for multiple platforms.
- Written in C++ and is optimized for performance.
- Intuitive and easy-to-learn syntax.
Qt
- Supports GUI development with its powerful set of widgets.
- Based the QML scripting language and enables developers to create user interfaces quickly.
- Is a library for creating 3D applications and games.
lumberyard
- Optimized for both performance and scalability.
- Makes the developers use the same codebase to create PC and console games.
- Highly extensible and can be easily incorporated into existing game engines.
NoahGameFrame
- Full-featured, open-source game development framework.
- Intuitive and comprehensive engine structure.
- Supports a wide range of input devices.
JoltPhysics
- Support for multiple physics engines, including Havok, PhysX, and Bullet.
- Has a built-in collision detection system.
- Has a built-in network synchronization system for multiplayer game development.
Trending Discussions on Gaming
Refactoring Laravel isset params to eloquent when condition
Even though they are logically the same, why am I getting different outputs?
Add commas every digits in numbers of kable()
Add commas between numbers in label and legend of ggplot2 plot
Misspecifying argument error in shiny app
Boxes are not displayed in ggplot2 boxplot
Apply mean and median in every row of a dataframe and add them as separated columns to the dataframe
Why is my XPath returning only text without tags?
Create columns from row values and fill - pandas
Implementing 3 modals triggered by 3 buttons
QUESTION
Refactoring Laravel isset params to eloquent when condition
Asked 2022-Apr-03 at 05:12I am trying to clean up my code, so i have decided to start using the when
option instead of isset in my querys ... But it doesnt seem to be working and I cant see where I am going wrong.
My original code looks like so;
1$params['game'] = 'fallout';
2
3$gameQuery = Gaming::query();
4
5$gameSelect = isset($params['game']) ? $params['game'] : null;
6if ($gameSelect) {
7 $gameQuery = $gameQuery->where('game' $gameSelect);
8}
9
This has been working in the codebase now for a number of years.
I tried refactoring to the following, using the when
keyword
1$params['game'] = 'fallout';
2
3$gameQuery = Gaming::query();
4
5$gameSelect = isset($params['game']) ? $params['game'] : null;
6if ($gameSelect) {
7 $gameQuery = $gameQuery->where('game' $gameSelect);
8}
9$params['game'] = 'fallout';
10
11$gameQuery = Gaming::query();
12
13$gameQuery->when($params['game'], function ($query) use ($params) {
14 $query->where('game', $params['game']);
15});
16
But for some reason it just skips over there where statement.
Any help would be greatly appreciated.
ANSWER
Answered 2022-Apr-03 at 05:121$params['game'] = 'fallout';
2
3$gameQuery = Gaming::query();
4
5$gameSelect = isset($params['game']) ? $params['game'] : null;
6if ($gameSelect) {
7 $gameQuery = $gameQuery->where('game' $gameSelect);
8}
9$params['game'] = 'fallout';
10
11$gameQuery = Gaming::query();
12
13$gameQuery->when($params['game'], function ($query) use ($params) {
14 $query->where('game', $params['game']);
15});
16$gameQuery->when(isset($params['game'])
17, function ($query) use ($params) {
18 $query->where('game', $params['game']);
19 });
20
QUESTION
Even though they are logically the same, why am I getting different outputs?
Asked 2022-Apr-02 at 10:08It's my first time asking a question here, so I apologize if the question has been repeated earlier.
This is my official solution for freeCodeCamp JS problem:
1const contacts = [
2 {
3 firstName: "Akira",
4 lastName: "Laine",
5 number: "0543236543",
6 likes: ["Pizza", "Coding", "Brownie Points"],
7 },
8 {
9 firstName: "Harry",
10 lastName: "Potter",
11 number: "0994372684",
12 likes: ["Hogwarts", "Magic", "Hagrid"],
13 },
14 {
15 firstName: "Sherlock",
16 lastName: "Holmes",
17 number: "0487345643",
18 likes: ["Intriguing Cases", "Violin"],
19 },
20 {
21 firstName: "Kristian",
22 lastName: "Vos",
23 number: "unknown",
24 likes: ["JavaScript", "Gaming", "Foxes"],
25 },
26];
27
28
29function lookUpProfile(name, prop) {
30
31 for(let i = 0; i<contacts.length;i++){
32 if(contacts[i].firstName == name && contacts[i].hasOwnProperty(prop)){
33 return contacts[i][prop];
34 }
35 else {
36 return "No such property"
37 }
38 }
39 return "No such contact";
40}
41
42console.log(lookUpProfile("Kristian", "lastName")); //Output: No such property
43
And this is the official solution with changes in the 'nested-if' loop:
1const contacts = [
2 {
3 firstName: "Akira",
4 lastName: "Laine",
5 number: "0543236543",
6 likes: ["Pizza", "Coding", "Brownie Points"],
7 },
8 {
9 firstName: "Harry",
10 lastName: "Potter",
11 number: "0994372684",
12 likes: ["Hogwarts", "Magic", "Hagrid"],
13 },
14 {
15 firstName: "Sherlock",
16 lastName: "Holmes",
17 number: "0487345643",
18 likes: ["Intriguing Cases", "Violin"],
19 },
20 {
21 firstName: "Kristian",
22 lastName: "Vos",
23 number: "unknown",
24 likes: ["JavaScript", "Gaming", "Foxes"],
25 },
26];
27
28
29function lookUpProfile(name, prop) {
30
31 for(let i = 0; i<contacts.length;i++){
32 if(contacts[i].firstName == name && contacts[i].hasOwnProperty(prop)){
33 return contacts[i][prop];
34 }
35 else {
36 return "No such property"
37 }
38 }
39 return "No such contact";
40}
41
42console.log(lookUpProfile("Kristian", "lastName")); //Output: No such property
43function lookUpProfile(name, prop) {
44
45 for(let i = 0; i<contacts.length;i++){
46 if(contacts[i].firstName == name){
47 if(contacts[i].hasOwnProperty(prop)){
48 return contacts[i][prop];
49 }
50 else {
51 return "No such property"
52 }
53 }
54 }
55 return "No such contact";
56}
57
58console.log(lookUpProfile("Kristian", "lastName")); //Output: Vos
59
Why am I getting different solutions even if the logic behind nested-if in the official solution is similar to mine?
ANSWER
Answered 2022-Apr-02 at 10:08They aren't logically the same.
Theirs is this:
1const contacts = [
2 {
3 firstName: "Akira",
4 lastName: "Laine",
5 number: "0543236543",
6 likes: ["Pizza", "Coding", "Brownie Points"],
7 },
8 {
9 firstName: "Harry",
10 lastName: "Potter",
11 number: "0994372684",
12 likes: ["Hogwarts", "Magic", "Hagrid"],
13 },
14 {
15 firstName: "Sherlock",
16 lastName: "Holmes",
17 number: "0487345643",
18 likes: ["Intriguing Cases", "Violin"],
19 },
20 {
21 firstName: "Kristian",
22 lastName: "Vos",
23 number: "unknown",
24 likes: ["JavaScript", "Gaming", "Foxes"],
25 },
26];
27
28
29function lookUpProfile(name, prop) {
30
31 for(let i = 0; i<contacts.length;i++){
32 if(contacts[i].firstName == name && contacts[i].hasOwnProperty(prop)){
33 return contacts[i][prop];
34 }
35 else {
36 return "No such property"
37 }
38 }
39 return "No such contact";
40}
41
42console.log(lookUpProfile("Kristian", "lastName")); //Output: No such property
43function lookUpProfile(name, prop) {
44
45 for(let i = 0; i<contacts.length;i++){
46 if(contacts[i].firstName == name){
47 if(contacts[i].hasOwnProperty(prop)){
48 return contacts[i][prop];
49 }
50 else {
51 return "No such property"
52 }
53 }
54 }
55 return "No such contact";
56}
57
58console.log(lookUpProfile("Kristian", "lastName")); //Output: Vos
59for (/*...*/) {
60 if (a) {
61 if (b) {
62 return X;
63 } else {
64 return Y;
65 }
66 }
67}
68
Notice that if a
is not true, neither return
happens, and the loop continues with the next iteration.
But yours is:
1const contacts = [
2 {
3 firstName: "Akira",
4 lastName: "Laine",
5 number: "0543236543",
6 likes: ["Pizza", "Coding", "Brownie Points"],
7 },
8 {
9 firstName: "Harry",
10 lastName: "Potter",
11 number: "0994372684",
12 likes: ["Hogwarts", "Magic", "Hagrid"],
13 },
14 {
15 firstName: "Sherlock",
16 lastName: "Holmes",
17 number: "0487345643",
18 likes: ["Intriguing Cases", "Violin"],
19 },
20 {
21 firstName: "Kristian",
22 lastName: "Vos",
23 number: "unknown",
24 likes: ["JavaScript", "Gaming", "Foxes"],
25 },
26];
27
28
29function lookUpProfile(name, prop) {
30
31 for(let i = 0; i<contacts.length;i++){
32 if(contacts[i].firstName == name && contacts[i].hasOwnProperty(prop)){
33 return contacts[i][prop];
34 }
35 else {
36 return "No such property"
37 }
38 }
39 return "No such contact";
40}
41
42console.log(lookUpProfile("Kristian", "lastName")); //Output: No such property
43function lookUpProfile(name, prop) {
44
45 for(let i = 0; i<contacts.length;i++){
46 if(contacts[i].firstName == name){
47 if(contacts[i].hasOwnProperty(prop)){
48 return contacts[i][prop];
49 }
50 else {
51 return "No such property"
52 }
53 }
54 }
55 return "No such contact";
56}
57
58console.log(lookUpProfile("Kristian", "lastName")); //Output: Vos
59for (/*...*/) {
60 if (a) {
61 if (b) {
62 return X;
63 } else {
64 return Y;
65 }
66 }
67}
68for (/*...*/) {
69 if (a && b) {
70 return X;
71 } else {
72 return Y;
73 }
74}
75
It returns even when a
is false, never moving on to the next loop iteration.
If you wanted to combine the outer test with the inner ones, it would be:
1const contacts = [
2 {
3 firstName: "Akira",
4 lastName: "Laine",
5 number: "0543236543",
6 likes: ["Pizza", "Coding", "Brownie Points"],
7 },
8 {
9 firstName: "Harry",
10 lastName: "Potter",
11 number: "0994372684",
12 likes: ["Hogwarts", "Magic", "Hagrid"],
13 },
14 {
15 firstName: "Sherlock",
16 lastName: "Holmes",
17 number: "0487345643",
18 likes: ["Intriguing Cases", "Violin"],
19 },
20 {
21 firstName: "Kristian",
22 lastName: "Vos",
23 number: "unknown",
24 likes: ["JavaScript", "Gaming", "Foxes"],
25 },
26];
27
28
29function lookUpProfile(name, prop) {
30
31 for(let i = 0; i<contacts.length;i++){
32 if(contacts[i].firstName == name && contacts[i].hasOwnProperty(prop)){
33 return contacts[i][prop];
34 }
35 else {
36 return "No such property"
37 }
38 }
39 return "No such contact";
40}
41
42console.log(lookUpProfile("Kristian", "lastName")); //Output: No such property
43function lookUpProfile(name, prop) {
44
45 for(let i = 0; i<contacts.length;i++){
46 if(contacts[i].firstName == name){
47 if(contacts[i].hasOwnProperty(prop)){
48 return contacts[i][prop];
49 }
50 else {
51 return "No such property"
52 }
53 }
54 }
55 return "No such contact";
56}
57
58console.log(lookUpProfile("Kristian", "lastName")); //Output: Vos
59for (/*...*/) {
60 if (a) {
61 if (b) {
62 return X;
63 } else {
64 return Y;
65 }
66 }
67}
68for (/*...*/) {
69 if (a && b) {
70 return X;
71 } else {
72 return Y;
73 }
74}
75for (/*...*/) {
76 if (a && b) {
77 return X;
78 } else if (a) { // <===
79 return Y;
80 }
81}
82
But that's not as clear as the original, and ends up testing a
twice unnecessarily.
QUESTION
Add commas every digits in numbers of kable()
Asked 2022-Mar-21 at 16:36I have the dataframe below and I create a kable out of this. How could I add commas between numbers every 3 digits?
1Descs<-structure(list(Mean = c(NaN, 943330388, NaN, NaN, NaN, 543234645,
245831420, NaN, 27301292, 160818771), Median = c(NaN, 943330388,
3NaN, NaN, NaN, 543234645, 45831420, NaN, 27301292, 160818771),
4 SD = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
5 NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), MAD = c(NA,
6 0, NA, NA, NA, 0, 0, NA, 0, 0), MIN = c(NA, 943330388, NA,
7 NA, NA, 543234645, 45831420, NA, 27301292, 160818771), MAX = c(NA,
8 943330388, NA, NA, NA, 543234645, 45831420, NA, 27301292,
9 160818771), VAR = c(NA_real_, NA_real_, NA_real_, NA_real_,
10 NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_
11 ), RANGE = structure(c(NA, 943330388, NA, NA, NA, 543234645,
12 45831420, NA, 27301292, 160818771, NA, 943330388, NA, NA,
13 NA, 543234645, 45831420, NA, 27301292, 160818771), .Dim = c(10L,
14 2L)), QUANTILES = structure(c(NA, 943330388, NA, NA, NA,
15 543234645, 45831420, NA, 27301292, 160818771, NA, 943330388,
16 NA, NA, NA, 543234645, 45831420, NA, 27301292, 160818771), .Dim = c(10L,
17 2L), .Dimnames = list(NULL, c("25%", "75%")))), row.names = c("Comedy",
18"Education", "Entertainment", "Film & Animation", "Gaming", "Howto & Style",
19"Music", "People & Blogs", "Science & Technology", "Sports"), class = "data.frame")
20
21library(kableExtra)
22
23kable(Descs) %>%
24 kable_styling(
25 font_size = 15,
26 bootstrap_options = c("striped", "hover", "condensed")
27 )
28
ANSWER
Answered 2022-Mar-21 at 16:36You could use the kable format argument, this avoids mucking around with the data prior to putting into the table.
And if you want to clear up the NAs and NaNs you could add in this line of code: options(knitr.kable.NA = '')
1Descs<-structure(list(Mean = c(NaN, 943330388, NaN, NaN, NaN, 543234645,
245831420, NaN, 27301292, 160818771), Median = c(NaN, 943330388,
3NaN, NaN, NaN, 543234645, 45831420, NaN, 27301292, 160818771),
4 SD = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
5 NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), MAD = c(NA,
6 0, NA, NA, NA, 0, 0, NA, 0, 0), MIN = c(NA, 943330388, NA,
7 NA, NA, 543234645, 45831420, NA, 27301292, 160818771), MAX = c(NA,
8 943330388, NA, NA, NA, 543234645, 45831420, NA, 27301292,
9 160818771), VAR = c(NA_real_, NA_real_, NA_real_, NA_real_,
10 NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_
11 ), RANGE = structure(c(NA, 943330388, NA, NA, NA, 543234645,
12 45831420, NA, 27301292, 160818771, NA, 943330388, NA, NA,
13 NA, 543234645, 45831420, NA, 27301292, 160818771), .Dim = c(10L,
14 2L)), QUANTILES = structure(c(NA, 943330388, NA, NA, NA,
15 543234645, 45831420, NA, 27301292, 160818771, NA, 943330388,
16 NA, NA, NA, 543234645, 45831420, NA, 27301292, 160818771), .Dim = c(10L,
17 2L), .Dimnames = list(NULL, c("25%", "75%")))), row.names = c("Comedy",
18"Education", "Entertainment", "Film & Animation", "Gaming", "Howto & Style",
19"Music", "People & Blogs", "Science & Technology", "Sports"), class = "data.frame")
20
21library(kableExtra)
22
23kable(Descs) %>%
24 kable_styling(
25 font_size = 15,
26 bootstrap_options = c("striped", "hover", "condensed")
27 )
28library(kableExtra)
29
30kable(Descs,
31 format.args = list(big.mark = ",")) %>%
32 kable_styling(
33 font_size = 15,
34 bootstrap_options = c("striped", "hover", "condensed")
35 )
36
37
QUESTION
Add commas between numbers in label and legend of ggplot2 plot
Asked 2022-Mar-21 at 16:07I have the dataframe below and I create a boxplot. I would like to format the numbers in y-axis and legend in order to have commas or .
1df_long<-structure(list(WORDS = c("Comedy", "Education", "Entertainment",
2"Film & Animation", "Gaming", "Howto & Style", "Music", "People & Blogs",
3"Science & Technology", "Sports"), TOTALS = c(0, 943330388, 0,
40, 0, 543234645, 45831420, 0, 27301292, 160818771)), row.names = c(NA,
5-10L), class = c("tbl_df", "tbl", "data.frame"))
6
7p <- ggplot(df_long, aes(x = WORDS, y = TOTALS, fill = WORDS)) +
8 geom_boxplot()
9
10p +
11 theme_minimal()+
12 theme(axis.text.x = element_text(angle = 90, vjust = 0.5,
13 hjust=1))+
14 xlab("Industries") +
15 ylab("Value")+ guides(fill=guide_legend(title="Industries"))
16+
17 scale_y_continuous(formatter = comma)+scale_fill_continuous(formatter = comma)
18
ANSWER
Answered 2022-Mar-21 at 16:07One way is using scales::comma
.
Note I've removed scale_fill_continuous
as this is incorrect: the fill aesthetic relates to a discrete variable: WORDS
1df_long<-structure(list(WORDS = c("Comedy", "Education", "Entertainment",
2"Film & Animation", "Gaming", "Howto & Style", "Music", "People & Blogs",
3"Science & Technology", "Sports"), TOTALS = c(0, 943330388, 0,
40, 0, 543234645, 45831420, 0, 27301292, 160818771)), row.names = c(NA,
5-10L), class = c("tbl_df", "tbl", "data.frame"))
6
7p <- ggplot(df_long, aes(x = WORDS, y = TOTALS, fill = WORDS)) +
8 geom_boxplot()
9
10p +
11 theme_minimal()+
12 theme(axis.text.x = element_text(angle = 90, vjust = 0.5,
13 hjust=1))+
14 xlab("Industries") +
15 ylab("Value")+ guides(fill=guide_legend(title="Industries"))
16+
17 scale_y_continuous(formatter = comma)+scale_fill_continuous(formatter = comma)
18library(ggplot2)
19library(scales)
20
21ggplot(df_long, aes(x = WORDS, y = TOTALS, fill = WORDS)) +
22 geom_boxplot() +
23 theme_minimal()+
24 theme(axis.text.x = element_text(angle = 90, vjust = 0.5,
25 hjust=1))+
26 xlab("Industries") +
27 ylab("Value")+
28 guides(fill = guide_legend(title="Industries")) +
29 scale_y_continuous(labels = comma)
30
Created on 2022-03-21 by the reprex package (v2.0.1)
QUESTION
Misspecifying argument error in shiny app
Asked 2022-Mar-18 at 16:53I have the shiny app below in which I try to present a descriptives table but my app breaks down with error:
1Did you misspecify an argument?
2 54: <Anonymous>
3Error : `...` is not empty.
4
5
6
7
8
9library(tidyverse)
10library(shiny)
11library(matrixStats)
12library(tibble)
13library(knitr)
14library(kableExtra)
15 Abstract_50<-structure(list(ID = c("UC_Ba9vCsY19LF7-gc46lWQQ", "UC_k6e2PPDUnxEdMJC9Q044g"
16), AbstractName = c("ABC 1", "ABC 2"), Country = c("US", "US"
17), Category = c("Gaming", "Comedy"), MadeK = c("No", "No"), SChan = c("Yes",
18"Yes"), Language = c("en", "EN"), URL1 = c("NA", "NA"), URL2 = c("NA",
19"NA"), `2018-03` = c(NA_real_, NA_real_), `2018-04` = c(NA_real_,
20NA_real_), `2018-05` = c(NA_real_, NA_real_), `2018-06` = c(NA_real_,
21NA_real_), `2018-07` = c(NA_real_, NA_real_), `2018-08` = c(NA_real_,
22NA_real_), `2018-09` = c(NA_real_, NA_real_), `2018-10` = c(NA_real_,
23NA_real_), `2018-11` = c(NA_real_, NA_real_), `2018-12` = c(NA_real_,
24NA_real_), `2019-01` = c(NA_real_, NA_real_), `2019-02` = c(NA_real_,
25NA_real_), `2019-03` = c(NA_real_, NA_real_), `2019-04` = c(NA_real_,
26NA_real_), `2019-05` = c(NA_real_, NA_real_), `2019-06` = c(NA_real_,
27NA_real_), `2019-07` = c(NA_real_, NA_real_), `2019-08` = c(NA_real_,
28NA_real_), `2019-09` = c(NA_real_, NA_real_), `2019-10` = c(NA_real_,
29NA_real_), `2019-11` = c(NA_real_, NA_real_), `2019-12` = c(NA_real_,
30NA_real_), `2020-01` = c(NA_real_, NA_real_), `2020-02` = c(NA_real_,
31NA_real_), `2020-03` = c(NA_real_, NA_real_), `2020-04` = c(NA_real_,
32NA_real_), `2020-05` = c(NA_real_, NA_real_), `2020-06` = c(NA,
3387710), `2020-07` = c(NA, 162416), `2020-08` = c(NA, 187892),
34 `2020-09` = c(NA, 374661), `2020-10` = c(NA, 449634), `2020-12` = c(NA,
35 1328523), `2021-01` = c(NA, 1525466), `2021-02` = c(NA, 1836399
36 ), `2021-03` = c(NA, 2752575), `2021-04` = c(86334, 1520546
37 ), `2021-05` = c(165124612, 3205193), `2021-06` = c(392264433,1534225), `2021-07` = c(282087438, 704348), `2021-08` = c(142305290,
38 49416984), `2021-09` = c(103659781, 49469088), `2021-10` = c(124671803,
39 20090134), `2021-11` = c(195965776, 363679038), `2021-12` = c(216612017,
40 774113580), `2022-01` = c(376009215, 796724246), `2022-02` = c(193946191,
41 599590598)), row.names = c(NA, -2L), class = c("tbl_df",
42"tbl", "data.frame"))
43
44shinyApp(
45
46 ui = fluidPage(
47 selectInput("month", "Month:",
48 choices = colnames(Abstract_50)[10:56],multiple=T,selected=colnames(Abstract_50)[10:14]),
49 htmlOutput("tableset")
50 ),
51
52 server = function(input, output) {
53 Ind<-Abstract_50[,c(4,10:56)] %>%
54 group_by(Category) %>%
55 summarise(across(everything(), sum))
56
57 Ind2<-reactive({
58 Ind <- Ind[,c("Category",input$month), drop = FALSE]
59
60 })
61 Ind3<-reactive(Ind2() %>% remove_rownames %>% column_to_rownames(var="Category"))
62
63 Descs<-reactive(
64 Descs2<-tibble(Mean = rowMeans(Ind3(), na.rm = TRUE),
65 Median = rowMedians(as.matrix(Ind3()), na.rm = TRUE),
66 SD=rowSds(as.matrix(Ind3()),na.rm = T),
67 MAD=rowMads(as.matrix(Ind3(),na.rm=T)),
68 MIN=rowMins(as.matrix(Ind3(),na.rm=T)),
69 MAX=rowMaxs(as.matrix(Ind3(),na.rm=T)),
70 VAR=rowVars(as.matrix(Ind3(),na.rm=T)),
71 RANGE=rowRanges(as.matrix(Ind3(),na.rm=T)),
72 QUANTILES=rowQuantiles(as.matrix(Ind3()), na.rm = TRUE)[, c(2, 4)]),
73
74 Descs2<-as.data.frame(Descs2),
75 rownames(Descs2)<-rownames(Ind3()),
76 Descs2
77 )
78
79
80
81
82 output$tableset <- renderText({
83 kable(Descs()) %>%
84 kable_styling(
85 font_size = 15,
86 bootstrap_options = c("striped", "hover", "condensed")
87 )
88 })
89 },
90
91 options = list(height = 500)
92
93)
94
ANSWER
Answered 2022-Mar-18 at 16:53In the code, there are places where the OP specified ,
at the end of a line e.g.
1Did you misspecify an argument?
2 54: <Anonymous>
3Error : `...` is not empty.
4
5
6
7
8
9library(tidyverse)
10library(shiny)
11library(matrixStats)
12library(tibble)
13library(knitr)
14library(kableExtra)
15 Abstract_50<-structure(list(ID = c("UC_Ba9vCsY19LF7-gc46lWQQ", "UC_k6e2PPDUnxEdMJC9Q044g"
16), AbstractName = c("ABC 1", "ABC 2"), Country = c("US", "US"
17), Category = c("Gaming", "Comedy"), MadeK = c("No", "No"), SChan = c("Yes",
18"Yes"), Language = c("en", "EN"), URL1 = c("NA", "NA"), URL2 = c("NA",
19"NA"), `2018-03` = c(NA_real_, NA_real_), `2018-04` = c(NA_real_,
20NA_real_), `2018-05` = c(NA_real_, NA_real_), `2018-06` = c(NA_real_,
21NA_real_), `2018-07` = c(NA_real_, NA_real_), `2018-08` = c(NA_real_,
22NA_real_), `2018-09` = c(NA_real_, NA_real_), `2018-10` = c(NA_real_,
23NA_real_), `2018-11` = c(NA_real_, NA_real_), `2018-12` = c(NA_real_,
24NA_real_), `2019-01` = c(NA_real_, NA_real_), `2019-02` = c(NA_real_,
25NA_real_), `2019-03` = c(NA_real_, NA_real_), `2019-04` = c(NA_real_,
26NA_real_), `2019-05` = c(NA_real_, NA_real_), `2019-06` = c(NA_real_,
27NA_real_), `2019-07` = c(NA_real_, NA_real_), `2019-08` = c(NA_real_,
28NA_real_), `2019-09` = c(NA_real_, NA_real_), `2019-10` = c(NA_real_,
29NA_real_), `2019-11` = c(NA_real_, NA_real_), `2019-12` = c(NA_real_,
30NA_real_), `2020-01` = c(NA_real_, NA_real_), `2020-02` = c(NA_real_,
31NA_real_), `2020-03` = c(NA_real_, NA_real_), `2020-04` = c(NA_real_,
32NA_real_), `2020-05` = c(NA_real_, NA_real_), `2020-06` = c(NA,
3387710), `2020-07` = c(NA, 162416), `2020-08` = c(NA, 187892),
34 `2020-09` = c(NA, 374661), `2020-10` = c(NA, 449634), `2020-12` = c(NA,
35 1328523), `2021-01` = c(NA, 1525466), `2021-02` = c(NA, 1836399
36 ), `2021-03` = c(NA, 2752575), `2021-04` = c(86334, 1520546
37 ), `2021-05` = c(165124612, 3205193), `2021-06` = c(392264433,1534225), `2021-07` = c(282087438, 704348), `2021-08` = c(142305290,
38 49416984), `2021-09` = c(103659781, 49469088), `2021-10` = c(124671803,
39 20090134), `2021-11` = c(195965776, 363679038), `2021-12` = c(216612017,
40 774113580), `2022-01` = c(376009215, 796724246), `2022-02` = c(193946191,
41 599590598)), row.names = c(NA, -2L), class = c("tbl_df",
42"tbl", "data.frame"))
43
44shinyApp(
45
46 ui = fluidPage(
47 selectInput("month", "Month:",
48 choices = colnames(Abstract_50)[10:56],multiple=T,selected=colnames(Abstract_50)[10:14]),
49 htmlOutput("tableset")
50 ),
51
52 server = function(input, output) {
53 Ind<-Abstract_50[,c(4,10:56)] %>%
54 group_by(Category) %>%
55 summarise(across(everything(), sum))
56
57 Ind2<-reactive({
58 Ind <- Ind[,c("Category",input$month), drop = FALSE]
59
60 })
61 Ind3<-reactive(Ind2() %>% remove_rownames %>% column_to_rownames(var="Category"))
62
63 Descs<-reactive(
64 Descs2<-tibble(Mean = rowMeans(Ind3(), na.rm = TRUE),
65 Median = rowMedians(as.matrix(Ind3()), na.rm = TRUE),
66 SD=rowSds(as.matrix(Ind3()),na.rm = T),
67 MAD=rowMads(as.matrix(Ind3(),na.rm=T)),
68 MIN=rowMins(as.matrix(Ind3(),na.rm=T)),
69 MAX=rowMaxs(as.matrix(Ind3(),na.rm=T)),
70 VAR=rowVars(as.matrix(Ind3(),na.rm=T)),
71 RANGE=rowRanges(as.matrix(Ind3(),na.rm=T)),
72 QUANTILES=rowQuantiles(as.matrix(Ind3()), na.rm = TRUE)[, c(2, 4)]),
73
74 Descs2<-as.data.frame(Descs2),
75 rownames(Descs2)<-rownames(Ind3()),
76 Descs2
77 )
78
79
80
81
82 output$tableset <- renderText({
83 kable(Descs()) %>%
84 kable_styling(
85 font_size = 15,
86 bootstrap_options = c("striped", "hover", "condensed")
87 )
88 })
89 },
90
91 options = list(height = 500)
92
93)
94 Descs2<-as.data.frame(Descs2),
95 rownames(Descs2)<-rownames(Ind3()),
96
-full code
1Did you misspecify an argument?
2 54: <Anonymous>
3Error : `...` is not empty.
4
5
6
7
8
9library(tidyverse)
10library(shiny)
11library(matrixStats)
12library(tibble)
13library(knitr)
14library(kableExtra)
15 Abstract_50<-structure(list(ID = c("UC_Ba9vCsY19LF7-gc46lWQQ", "UC_k6e2PPDUnxEdMJC9Q044g"
16), AbstractName = c("ABC 1", "ABC 2"), Country = c("US", "US"
17), Category = c("Gaming", "Comedy"), MadeK = c("No", "No"), SChan = c("Yes",
18"Yes"), Language = c("en", "EN"), URL1 = c("NA", "NA"), URL2 = c("NA",
19"NA"), `2018-03` = c(NA_real_, NA_real_), `2018-04` = c(NA_real_,
20NA_real_), `2018-05` = c(NA_real_, NA_real_), `2018-06` = c(NA_real_,
21NA_real_), `2018-07` = c(NA_real_, NA_real_), `2018-08` = c(NA_real_,
22NA_real_), `2018-09` = c(NA_real_, NA_real_), `2018-10` = c(NA_real_,
23NA_real_), `2018-11` = c(NA_real_, NA_real_), `2018-12` = c(NA_real_,
24NA_real_), `2019-01` = c(NA_real_, NA_real_), `2019-02` = c(NA_real_,
25NA_real_), `2019-03` = c(NA_real_, NA_real_), `2019-04` = c(NA_real_,
26NA_real_), `2019-05` = c(NA_real_, NA_real_), `2019-06` = c(NA_real_,
27NA_real_), `2019-07` = c(NA_real_, NA_real_), `2019-08` = c(NA_real_,
28NA_real_), `2019-09` = c(NA_real_, NA_real_), `2019-10` = c(NA_real_,
29NA_real_), `2019-11` = c(NA_real_, NA_real_), `2019-12` = c(NA_real_,
30NA_real_), `2020-01` = c(NA_real_, NA_real_), `2020-02` = c(NA_real_,
31NA_real_), `2020-03` = c(NA_real_, NA_real_), `2020-04` = c(NA_real_,
32NA_real_), `2020-05` = c(NA_real_, NA_real_), `2020-06` = c(NA,
3387710), `2020-07` = c(NA, 162416), `2020-08` = c(NA, 187892),
34 `2020-09` = c(NA, 374661), `2020-10` = c(NA, 449634), `2020-12` = c(NA,
35 1328523), `2021-01` = c(NA, 1525466), `2021-02` = c(NA, 1836399
36 ), `2021-03` = c(NA, 2752575), `2021-04` = c(86334, 1520546
37 ), `2021-05` = c(165124612, 3205193), `2021-06` = c(392264433,1534225), `2021-07` = c(282087438, 704348), `2021-08` = c(142305290,
38 49416984), `2021-09` = c(103659781, 49469088), `2021-10` = c(124671803,
39 20090134), `2021-11` = c(195965776, 363679038), `2021-12` = c(216612017,
40 774113580), `2022-01` = c(376009215, 796724246), `2022-02` = c(193946191,
41 599590598)), row.names = c(NA, -2L), class = c("tbl_df",
42"tbl", "data.frame"))
43
44shinyApp(
45
46 ui = fluidPage(
47 selectInput("month", "Month:",
48 choices = colnames(Abstract_50)[10:56],multiple=T,selected=colnames(Abstract_50)[10:14]),
49 htmlOutput("tableset")
50 ),
51
52 server = function(input, output) {
53 Ind<-Abstract_50[,c(4,10:56)] %>%
54 group_by(Category) %>%
55 summarise(across(everything(), sum))
56
57 Ind2<-reactive({
58 Ind <- Ind[,c("Category",input$month), drop = FALSE]
59
60 })
61 Ind3<-reactive(Ind2() %>% remove_rownames %>% column_to_rownames(var="Category"))
62
63 Descs<-reactive(
64 Descs2<-tibble(Mean = rowMeans(Ind3(), na.rm = TRUE),
65 Median = rowMedians(as.matrix(Ind3()), na.rm = TRUE),
66 SD=rowSds(as.matrix(Ind3()),na.rm = T),
67 MAD=rowMads(as.matrix(Ind3(),na.rm=T)),
68 MIN=rowMins(as.matrix(Ind3(),na.rm=T)),
69 MAX=rowMaxs(as.matrix(Ind3(),na.rm=T)),
70 VAR=rowVars(as.matrix(Ind3(),na.rm=T)),
71 RANGE=rowRanges(as.matrix(Ind3(),na.rm=T)),
72 QUANTILES=rowQuantiles(as.matrix(Ind3()), na.rm = TRUE)[, c(2, 4)]),
73
74 Descs2<-as.data.frame(Descs2),
75 rownames(Descs2)<-rownames(Ind3()),
76 Descs2
77 )
78
79
80
81
82 output$tableset <- renderText({
83 kable(Descs()) %>%
84 kable_styling(
85 font_size = 15,
86 bootstrap_options = c("striped", "hover", "condensed")
87 )
88 })
89 },
90
91 options = list(height = 500)
92
93)
94 Descs2<-as.data.frame(Descs2),
95 rownames(Descs2)<-rownames(Ind3()),
96 ui = fluidPage(
97 selectInput("month", "Month:",
98 choices = colnames(Abstract_50)[10:56],multiple=TRUE,selected=colnames(Abstract_50)[10:14]),
99 htmlOutput("tableset")
100 )
101
102 server = function(input, output) {
103 Ind<-Abstract_50[,c(4,10:56)] %>%
104 group_by(Category) %>%
105 summarise(across(everything(), sum))
106
107 Ind2<-reactive({
108 Ind <- Ind[,c("Category",input$month), drop = FALSE]
109
110 })
111 Ind3<-reactive({
112 req(Ind2())
113 Ind2() %>% remove_rownames %>% column_to_rownames(var="Category")
114 }
115
116 )
117
118
119 Descs<-reactive({
120 req(Ind3())
121 tmp <- Ind3()
122 Descs2<-tibble(Mean = rowMeans(tmp, na.rm = TRUE),
123 Median = rowMedians(as.matrix(tmp), na.rm = TRUE),
124 SD=rowSds(as.matrix(tmp),na.rm = TRUE),
125 MAD=rowMads(as.matrix(tmp,na.rm=TRUE)),
126 MIN=rowMins(as.matrix(tmp,na.rm=TRUE)),
127 MAX=rowMaxs(as.matrix(tmp,na.rm=TRUE)),
128 VAR=rowVars(as.matrix(tmp,na.rm=TRUE)),
129 RANGE=rowRanges(as.matrix(tmp,na.rm=TRUE)),
130 QUANTILES=rowQuantiles(as.matrix(tmp), na.rm = TRUE)[, c(2, 4)])
131
132 Descs2<-as.data.frame(Descs2)
133 rownames(Descs2)<-rownames(tmp)
134 Descs2
135 }
136 )
137
138
139
140
141 output$tableset <- renderText({
142 kable(Descs()) %>%
143 kable_styling(
144 font_size = 15,
145 bootstrap_options = c("striped", "hover", "condensed")
146 )
147 })
148 }
149
150shinyApp(ui = ui, server = server, options = list(height = 500))
151
QUESTION
Boxes are not displayed in ggplot2 boxplot
Asked 2022-Mar-17 at 17:47I have the dataframe below and I create a box plot but I cannot see the boxes for some reason.Is it because of my values? How can I display them?
1 df<-structure(list(Comedy = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
30, 0, 0, 0, 0, 0, 192993657, 2027127534, 1826083072, 1128287155,
41757374990, 2694138537, 3190204219, 2038778526), Education = c(943330388,
51155823837, 1360355713, 1826278073, 2188996970, 2021212414, 2289941566,
62127165749, 1783936602, 2872498991, 2853872150, 3064968119, 3215161644,
73049311469, 2820083900, 2044822024, 3779135880, 2844133676, 3376034265,
83041618231, 3105665413, 3550804553, 3539721850, 4456458622, 4991538788,
95828853483, 4966268171, 4512424020, 4502737563, 4375577460, 4552548135,
103738145324, 3995222561, 3953186608, 3594443364, 3585009005, 2700428379,
112902711237, 2359179701, 2740895126, 1867652957, 2048359210, 2314370309,
122998250015, 3491065357, 3903773976, 2935444472), Entertainment = c(0,
130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7788928842, 7204965173,
156992191235, 5457111773, 6860197195, 8855099815, 10013159307,
1610474839762, 9524669175), `Film & Animation` = c(0, 0, 0, 0,
170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 759717307,
18615753280, 318711634, 333904916, -693533921, 2091024234, 950022270,
191001308730, 1026354524, 1081811412, 1199434291, 1433216491, 1442529761,
201532974436, 1395606514, 1363861251, 1389014794, 1593050956, 1685049970,
211547131073, 1518807877, 1233700577, 1218615927, 1454858377, 1352274781
22), Gaming = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2510727459, 2443299082, 3488510114, 5039516826, 3532430927, 3672818367, 3326539144,
243130946776, 3280046870, 3691388930, 2605046632), `Howto & Style` = c(543234645,
25637460061, 715598918, 853921148, 863342506, 795767480, 746997762,
26653842221, 788862290, 591282170, 568671091, 548087579, 485300284,
27436535293, 568286241, 478040015, 521541708, 405161168, 319837479,
28280725401, 360157763, 165904320, 212343880, 327743010, 395400144,
29426654776, 366884505, 357665076, 364828829, 345995485, 297049174,
30240780776, 274207911, 273912428, 319470376, 392600212, 360147433,
31264181288, 251605545, 236415550, 204441940, 421922863, 256820429,
32424107264, 431256372, 390931344, 274420963), Music = c(45831420,
3338904148, 73012836, 84645886, 111060240, 57262179, 26950500,
3439134840, 60187872, 47610185, 23140910, 25985719, 28712442, 25722654,
3547876708, 25865517, 32238860, 40636947, 44902937, 55838200, 36025492,
3628671767, 82421655, 31274307, 42413334, 7507664, 35619244, -11045119,
3737486877, 20923182, 27529830, 30924536, 28565411, 39739293, 23233821,
38115184742, 25449369, 23944670, 41185546, -16964201, 47813282,
3921983523, 17880023, 13962494, 12342364, 13356074, 13021208),
40 `People & Blogs` = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
41 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
42 0, 0, 0, 0, 398375824, 454784769, 370688348, 369779164, 500101683,833749803, 1063138342, 1479795070, 1619160390, 1834784208,
43 2111705491, 1350498139), `Science & Technology` = c(27301292,
44 39573248, 48043856, 39855934, 52061005, 49053872, 49842103,
45 44976795, 124632168, 50023068, 62941217, 47587876, 77099065,
46 84765100, 58321781, 91284611, 96894838, 94260454, 72295712,
47 102476421, 127194669, 67833402, 83318605, 114770114, 65328120,
48 142092816, 123237585, 88539117, 176004414, 125341790, 142739116,
49 86111812, 160017617, 131590671, 112033237, 129916112, 122655167,
50 135571501, 63475989, 116497124, 94155011, 100342778, 90332692,
51 88069070, 138735396, 76689085, 48123575), Sports = c(160818771,
52 208830991, 189706047, 254772059, 310324223, 175281803, 245742536,
53 213430460, 221505212, 231476966, 175724338, 258531007, 190968565,
54 223061017, 210376637, 260369412, 289167706, 200040944, 260041965,
55 200611576, 169604151, 276707678, 215539732, 214705917, 175674357,
56 278796775, 285834056, 181252193, 270411741, 188726163, 189031053,
57 155748840, 195702049, 160777215, 163685423, 191998118, 150304968,
58 133674014, 162583897, 142010262, 123440234, 99242284, 100782041,
59 81297079, 94100459, 123463360, 104218370)), class = "data.frame", row.names = c("2018-03",
60"2018-04", "2018-05", "2018-06", "2018-07", "2018-08", "2018-09",
61"2018-10", "2018-11", "2018-12", "2019-01", "2019-02", "2019-03","2019-04", "2019-05", "2019-06", "2019-07", "2019-08", "2019-09",
62"2019-10", "2019-11", "2019-12", "2020-01", "2020-02", "2020-03",
63"2020-04", "2020-05", "2020-06", "2020-07", "2020-08", "2020-09",
64"2020-10", "2020-12", "2021-01", "2021-02", "2021-03", "2021-04",
65"2021-05", "2021-06", "2021-07", "2021-08", "2021-09", "2021-10",
66"2021-11", "2021-12", "2022-01", "2022-02"))
67
68
69p<-ggplot(df, aes(x=WORDS, y=TOTALS, fill=WORDS)) +
70 geom_boxplot()
71 p+theme_minimal()+ theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
72 xlab("Industries") + ylab("Value")
73
ANSWER
Answered 2022-Mar-17 at 17:47With the new data, it is in 'wide' format. We can reshape to 'long' with pivot_longer
and it should work
1 df<-structure(list(Comedy = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
30, 0, 0, 0, 0, 0, 192993657, 2027127534, 1826083072, 1128287155,
41757374990, 2694138537, 3190204219, 2038778526), Education = c(943330388,
51155823837, 1360355713, 1826278073, 2188996970, 2021212414, 2289941566,
62127165749, 1783936602, 2872498991, 2853872150, 3064968119, 3215161644,
73049311469, 2820083900, 2044822024, 3779135880, 2844133676, 3376034265,
83041618231, 3105665413, 3550804553, 3539721850, 4456458622, 4991538788,
95828853483, 4966268171, 4512424020, 4502737563, 4375577460, 4552548135,
103738145324, 3995222561, 3953186608, 3594443364, 3585009005, 2700428379,
112902711237, 2359179701, 2740895126, 1867652957, 2048359210, 2314370309,
122998250015, 3491065357, 3903773976, 2935444472), Entertainment = c(0,
130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7788928842, 7204965173,
156992191235, 5457111773, 6860197195, 8855099815, 10013159307,
1610474839762, 9524669175), `Film & Animation` = c(0, 0, 0, 0,
170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 759717307,
18615753280, 318711634, 333904916, -693533921, 2091024234, 950022270,
191001308730, 1026354524, 1081811412, 1199434291, 1433216491, 1442529761,
201532974436, 1395606514, 1363861251, 1389014794, 1593050956, 1685049970,
211547131073, 1518807877, 1233700577, 1218615927, 1454858377, 1352274781
22), Gaming = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2510727459, 2443299082, 3488510114, 5039516826, 3532430927, 3672818367, 3326539144,
243130946776, 3280046870, 3691388930, 2605046632), `Howto & Style` = c(543234645,
25637460061, 715598918, 853921148, 863342506, 795767480, 746997762,
26653842221, 788862290, 591282170, 568671091, 548087579, 485300284,
27436535293, 568286241, 478040015, 521541708, 405161168, 319837479,
28280725401, 360157763, 165904320, 212343880, 327743010, 395400144,
29426654776, 366884505, 357665076, 364828829, 345995485, 297049174,
30240780776, 274207911, 273912428, 319470376, 392600212, 360147433,
31264181288, 251605545, 236415550, 204441940, 421922863, 256820429,
32424107264, 431256372, 390931344, 274420963), Music = c(45831420,
3338904148, 73012836, 84645886, 111060240, 57262179, 26950500,
3439134840, 60187872, 47610185, 23140910, 25985719, 28712442, 25722654,
3547876708, 25865517, 32238860, 40636947, 44902937, 55838200, 36025492,
3628671767, 82421655, 31274307, 42413334, 7507664, 35619244, -11045119,
3737486877, 20923182, 27529830, 30924536, 28565411, 39739293, 23233821,
38115184742, 25449369, 23944670, 41185546, -16964201, 47813282,
3921983523, 17880023, 13962494, 12342364, 13356074, 13021208),
40 `People & Blogs` = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
41 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
42 0, 0, 0, 0, 398375824, 454784769, 370688348, 369779164, 500101683,833749803, 1063138342, 1479795070, 1619160390, 1834784208,
43 2111705491, 1350498139), `Science & Technology` = c(27301292,
44 39573248, 48043856, 39855934, 52061005, 49053872, 49842103,
45 44976795, 124632168, 50023068, 62941217, 47587876, 77099065,
46 84765100, 58321781, 91284611, 96894838, 94260454, 72295712,
47 102476421, 127194669, 67833402, 83318605, 114770114, 65328120,
48 142092816, 123237585, 88539117, 176004414, 125341790, 142739116,
49 86111812, 160017617, 131590671, 112033237, 129916112, 122655167,
50 135571501, 63475989, 116497124, 94155011, 100342778, 90332692,
51 88069070, 138735396, 76689085, 48123575), Sports = c(160818771,
52 208830991, 189706047, 254772059, 310324223, 175281803, 245742536,
53 213430460, 221505212, 231476966, 175724338, 258531007, 190968565,
54 223061017, 210376637, 260369412, 289167706, 200040944, 260041965,
55 200611576, 169604151, 276707678, 215539732, 214705917, 175674357,
56 278796775, 285834056, 181252193, 270411741, 188726163, 189031053,
57 155748840, 195702049, 160777215, 163685423, 191998118, 150304968,
58 133674014, 162583897, 142010262, 123440234, 99242284, 100782041,
59 81297079, 94100459, 123463360, 104218370)), class = "data.frame", row.names = c("2018-03",
60"2018-04", "2018-05", "2018-06", "2018-07", "2018-08", "2018-09",
61"2018-10", "2018-11", "2018-12", "2019-01", "2019-02", "2019-03","2019-04", "2019-05", "2019-06", "2019-07", "2019-08", "2019-09",
62"2019-10", "2019-11", "2019-12", "2020-01", "2020-02", "2020-03",
63"2020-04", "2020-05", "2020-06", "2020-07", "2020-08", "2020-09",
64"2020-10", "2020-12", "2021-01", "2021-02", "2021-03", "2021-04",
65"2021-05", "2021-06", "2021-07", "2021-08", "2021-09", "2021-10",
66"2021-11", "2021-12", "2022-01", "2022-02"))
67
68
69p<-ggplot(df, aes(x=WORDS, y=TOTALS, fill=WORDS)) +
70 geom_boxplot()
71 p+theme_minimal()+ theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
72 xlab("Industries") + ylab("Value")
73library(dplyr)
74library(tidyr)
75library(ggplot2)
76df_long <- pivot_longer(df, cols = everything(), names_to = 'WORDS',
77 values_to = 'TOTALS')
78
79p <- ggplot(df_long, aes(x = WORDS, y = TOTALS, fill = WORDS)) +
80 geom_boxplot()
81
82p +
83 theme_minimal()+
84 theme(axis.text.x = element_text(angle = 90, vjust = 0.5,
85 hjust=1))+
86 xlab("Industries") +
87 ylab("Value")
88
QUESTION
Apply mean and median in every row of a dataframe and add them as separated columns to the dataframe
Asked 2022-Mar-17 at 16:40I have the dataframe below:
1structure(list(`2018-03` = c(NA, 943330388, NA, NA, NA, 543234645,
245831420, NA, 27301292, 160818771), `2018-04` = c(NA, 1155823837,
3NA, NA, NA, 637460061, 38904148, NA, 39573248, 208830991), `2018-05` = c(NA,
41360355713, NA, NA, NA, 715598918, 73012836, NA, 48043856, 189706047
5)), class = "data.frame", row.names = c("Comedy", "Education",
6"Entertainment", "Film & Animation", "Gaming", "Howto & Style",
7"Music", "People & Blogs", "Science & Technology", "Sports"))
8
and I want to create a new dataframe with row names the same as now and the 2 new columns should be the mean
for every row, and the median
of every row.
ANSWER
Answered 2022-Mar-17 at 16:40We could use rowMeans
with rowMedians
(from matrixStats
)
1structure(list(`2018-03` = c(NA, 943330388, NA, NA, NA, 543234645,
245831420, NA, 27301292, 160818771), `2018-04` = c(NA, 1155823837,
3NA, NA, NA, 637460061, 38904148, NA, 39573248, 208830991), `2018-05` = c(NA,
41360355713, NA, NA, NA, 715598918, 73012836, NA, 48043856, 189706047
5)), class = "data.frame", row.names = c("Comedy", "Education",
6"Entertainment", "Film & Animation", "Gaming", "Howto & Style",
7"Music", "People & Blogs", "Science & Technology", "Sports"))
8library(matrixStats)
9library(tibble)
10tibble(Mean = rowMeans(df1, na.rm = TRUE),
11 Median = rowMedians(as.matrix(df1), na.rm = TRUE))
12
QUESTION
Why is my XPath returning only text without tags?
Asked 2022-Mar-17 at 02:34I am using Google Sheets to send an update to my Discord server every time there is an update from a forum site.
However, when I scrape this link,
https://forum.mir4global.com/board/patchnote
using this XPath,
1string((//*[@id="viewContent"])[1])
2
via use IMPORTXML
I get this result:
" We strive to provide a fun and fair gaming experience for all our players. Our team carefully monitors and actively removes players who do not adhere to the Operational Policy and Terms of Use.>> Operational Policy>> Terms of UseWe maintain a zero-tolerance policy against the use of unauthorized programs or software, manipulation or tampering of game data, and intentional exploitation of game systems. To date, we have permanently restricted more than 11,062,000 accounts. [Accounts Banned or Restricted]- Applicable Date: Wednesday, Mar. 16th, 2022- Number of Accounts: 114,952 (Total 11,062,063) - Reason: Use of unauthorized programs & Violation of Operational Policy*If you wish to make an appeal for the restriction imposed onto your account, please submit a support ticket through our official website. (https://cs.mir4global.com/customer)Inquiry Route : Contact Us > Account > Objection of restriction※ Please note that it may take a long time to receive an answer if you don't submit your inquiry ticket through the route above. We will continue to do our best in order to ensure a safe, fair, and fun gaming environment for all our players. "
How can I get the same format like in the forum site?
ANSWER
Answered 2022-Mar-17 at 02:34The whole point of the XPath function, string()
, is to return the string-value (just the text without any markup) of the given node.
If you want the markup, remove the wrapping string()
function.
QUESTION
Create columns from row values and fill - pandas
Asked 2022-Mar-04 at 09:57I have a dataframe that looks like this:
df=pd.read_csv('https://raw.githubusercontent.com/amanaroratc/hello-world/master/ask_git.csv')
1 Channel_ID Video_Category_Name score_pct
20 UC--bUZc5c9WseZNqGR6KLxA Autos & Vehicles 0.213702
31 UC--bUZc5c9WseZNqGR6KLxA Entertainment 0.786298
42 UC-B1L3oT81XgeeGh6S12qgQ People & Blogs 1.000000
53 UC-N_7HFKrSsYxCSA_kfdRSA People & Blogs 0.137261
64 UC-N_7HFKrSsYxCSA_kfdRSA Pets & Animals 0.862739
7... ... ... ...
8819 UCzsNLZ9GrGXRjt0QmvWFm2Q Entertainment 0.945243
9820 UCzsNLZ9GrGXRjt0QmvWFm2Q Film & Animation 0.002046
10821 UCzsNLZ9GrGXRjt0QmvWFm2Q Music 0.002797
11822 UCzsNLZ9GrGXRjt0QmvWFm2Q News & Politics 0.000433
12823 UCzsNLZ9GrGXRjt0QmvWFm2Q People & Blogs 0.000358
13
There are 15 distinct values in Video_Category_Name
:
1 Channel_ID Video_Category_Name score_pct
20 UC--bUZc5c9WseZNqGR6KLxA Autos & Vehicles 0.213702
31 UC--bUZc5c9WseZNqGR6KLxA Entertainment 0.786298
42 UC-B1L3oT81XgeeGh6S12qgQ People & Blogs 1.000000
53 UC-N_7HFKrSsYxCSA_kfdRSA People & Blogs 0.137261
64 UC-N_7HFKrSsYxCSA_kfdRSA Pets & Animals 0.862739
7... ... ... ...
8819 UCzsNLZ9GrGXRjt0QmvWFm2Q Entertainment 0.945243
9820 UCzsNLZ9GrGXRjt0QmvWFm2Q Film & Animation 0.002046
10821 UCzsNLZ9GrGXRjt0QmvWFm2Q Music 0.002797
11822 UCzsNLZ9GrGXRjt0QmvWFm2Q News & Politics 0.000433
12823 UCzsNLZ9GrGXRjt0QmvWFm2Q People & Blogs 0.000358
13df.Video_Category_Name.unique()
14
gives
1 Channel_ID Video_Category_Name score_pct
20 UC--bUZc5c9WseZNqGR6KLxA Autos & Vehicles 0.213702
31 UC--bUZc5c9WseZNqGR6KLxA Entertainment 0.786298
42 UC-B1L3oT81XgeeGh6S12qgQ People & Blogs 1.000000
53 UC-N_7HFKrSsYxCSA_kfdRSA People & Blogs 0.137261
64 UC-N_7HFKrSsYxCSA_kfdRSA Pets & Animals 0.862739
7... ... ... ...
8819 UCzsNLZ9GrGXRjt0QmvWFm2Q Entertainment 0.945243
9820 UCzsNLZ9GrGXRjt0QmvWFm2Q Film & Animation 0.002046
10821 UCzsNLZ9GrGXRjt0QmvWFm2Q Music 0.002797
11822 UCzsNLZ9GrGXRjt0QmvWFm2Q News & Politics 0.000433
12823 UCzsNLZ9GrGXRjt0QmvWFm2Q People & Blogs 0.000358
13df.Video_Category_Name.unique()
14array(['Autos & Vehicles', 'Entertainment', 'People & Blogs',
15 'Pets & Animals', 'Howto & Style', 'Education', 'Gaming', 'Music',
16 'Comedy', 'Travel & Events', 'Science & Technology',
17 'Nonprofits & Activism', 'Sports', 'Film & Animation',
18 'News & Politics'], dtype=object)
19
1 Channel_ID Video_Category_Name score_pct
20 UC--bUZc5c9WseZNqGR6KLxA Autos & Vehicles 0.213702
31 UC--bUZc5c9WseZNqGR6KLxA Entertainment 0.786298
42 UC-B1L3oT81XgeeGh6S12qgQ People & Blogs 1.000000
53 UC-N_7HFKrSsYxCSA_kfdRSA People & Blogs 0.137261
64 UC-N_7HFKrSsYxCSA_kfdRSA Pets & Animals 0.862739
7... ... ... ...
8819 UCzsNLZ9GrGXRjt0QmvWFm2Q Entertainment 0.945243
9820 UCzsNLZ9GrGXRjt0QmvWFm2Q Film & Animation 0.002046
10821 UCzsNLZ9GrGXRjt0QmvWFm2Q Music 0.002797
11822 UCzsNLZ9GrGXRjt0QmvWFm2Q News & Politics 0.000433
12823 UCzsNLZ9GrGXRjt0QmvWFm2Q People & Blogs 0.000358
13df.Video_Category_Name.unique()
14array(['Autos & Vehicles', 'Entertainment', 'People & Blogs',
15 'Pets & Animals', 'Howto & Style', 'Education', 'Gaming', 'Music',
16 'Comedy', 'Travel & Events', 'Science & Technology',
17 'Nonprofits & Activism', 'Sports', 'Film & Animation',
18 'News & Politics'], dtype=object)
19 In [3]: iwantthis
20 Out[3]:
21 Channel_ID Autos & Vehicles Entertainment People & Blogs ...
22 0 UC--bUZc5c9WseZNqGR6KLxA 0.213702 0.786298 0 ...
23 1 UC-B1L3oT81XgeeGh6S12qgQ 0 0 1.0000 ...
24
How do I create a column for each of these 15 and fill value from score_pct
(0
if it does not exist)?
Not sure how to use unstack/melt/pivot or something else
ANSWER
Answered 2022-Mar-04 at 09:57I think pivot()
is the right function for your problem. It takes the categorial values of Video_Category_Name
and creates new columns, which are filled with the value of score_pct
. Non existing values are replaced by zero with `filna(0):
1 Channel_ID Video_Category_Name score_pct
20 UC--bUZc5c9WseZNqGR6KLxA Autos & Vehicles 0.213702
31 UC--bUZc5c9WseZNqGR6KLxA Entertainment 0.786298
42 UC-B1L3oT81XgeeGh6S12qgQ People & Blogs 1.000000
53 UC-N_7HFKrSsYxCSA_kfdRSA People & Blogs 0.137261
64 UC-N_7HFKrSsYxCSA_kfdRSA Pets & Animals 0.862739
7... ... ... ...
8819 UCzsNLZ9GrGXRjt0QmvWFm2Q Entertainment 0.945243
9820 UCzsNLZ9GrGXRjt0QmvWFm2Q Film & Animation 0.002046
10821 UCzsNLZ9GrGXRjt0QmvWFm2Q Music 0.002797
11822 UCzsNLZ9GrGXRjt0QmvWFm2Q News & Politics 0.000433
12823 UCzsNLZ9GrGXRjt0QmvWFm2Q People & Blogs 0.000358
13df.Video_Category_Name.unique()
14array(['Autos & Vehicles', 'Entertainment', 'People & Blogs',
15 'Pets & Animals', 'Howto & Style', 'Education', 'Gaming', 'Music',
16 'Comedy', 'Travel & Events', 'Science & Technology',
17 'Nonprofits & Activism', 'Sports', 'Film & Animation',
18 'News & Politics'], dtype=object)
19 In [3]: iwantthis
20 Out[3]:
21 Channel_ID Autos & Vehicles Entertainment People & Blogs ...
22 0 UC--bUZc5c9WseZNqGR6KLxA 0.213702 0.786298 0 ...
23 1 UC-B1L3oT81XgeeGh6S12qgQ 0 0 1.0000 ...
24df = df.pivot(index='Channel_ID', columns='Video_Category_Name', values='score_pct').fillna(0).reset_index()
25
Output:
1 Channel_ID Video_Category_Name score_pct
20 UC--bUZc5c9WseZNqGR6KLxA Autos & Vehicles 0.213702
31 UC--bUZc5c9WseZNqGR6KLxA Entertainment 0.786298
42 UC-B1L3oT81XgeeGh6S12qgQ People & Blogs 1.000000
53 UC-N_7HFKrSsYxCSA_kfdRSA People & Blogs 0.137261
64 UC-N_7HFKrSsYxCSA_kfdRSA Pets & Animals 0.862739
7... ... ... ...
8819 UCzsNLZ9GrGXRjt0QmvWFm2Q Entertainment 0.945243
9820 UCzsNLZ9GrGXRjt0QmvWFm2Q Film & Animation 0.002046
10821 UCzsNLZ9GrGXRjt0QmvWFm2Q Music 0.002797
11822 UCzsNLZ9GrGXRjt0QmvWFm2Q News & Politics 0.000433
12823 UCzsNLZ9GrGXRjt0QmvWFm2Q People & Blogs 0.000358
13df.Video_Category_Name.unique()
14array(['Autos & Vehicles', 'Entertainment', 'People & Blogs',
15 'Pets & Animals', 'Howto & Style', 'Education', 'Gaming', 'Music',
16 'Comedy', 'Travel & Events', 'Science & Technology',
17 'Nonprofits & Activism', 'Sports', 'Film & Animation',
18 'News & Politics'], dtype=object)
19 In [3]: iwantthis
20 Out[3]:
21 Channel_ID Autos & Vehicles Entertainment People & Blogs ...
22 0 UC--bUZc5c9WseZNqGR6KLxA 0.213702 0.786298 0 ...
23 1 UC-B1L3oT81XgeeGh6S12qgQ 0 0 1.0000 ...
24df = df.pivot(index='Channel_ID', columns='Video_Category_Name', values='score_pct').fillna(0).reset_index()
25Video_Category_Name Channel_ID Autos & Vehicles Comedy Education Entertainment Film & Animation Gaming Howto & Style Music News & Politics Nonprofits & Activism People & Blogs Pets & Animals Science & Technology Sports Travel & Events
260 UC--bUZc5c9WseZNqGR6KLxA 0.213702 0.0 0.0 0.786298 0.0 0.0 0.0 0.0 0.0 0.0 0.000000 0.000000 0.0 0.0 0.0
271 UC-B1L3oT81XgeeGh6S12qgQ 0.000000 0.0 0.0 0.000000 0.0 0.0 0.0 0.0 0.0 0.0 1.000000 0.000000 0.0 0.0 0.0
282 UC-N_7HFKrSsYxCSA_kfdRSA 0.000000 0.0 0.0 0.000000 0.0 0.0 0.0 0.0 0.0 0.0 0.137261 0.862739 0.0 0.0 0.0
293 UC-T4JheeuNl2DVg-B-v7McA 0.000000 0.0 0.0 0.000000 0.0 0.0 1.0 0.0 0.0 0.0 0.000000 0.000000 0.0 0.0 0.0
304 UC-WG1VP4am6NaUtANEJxRQw 0.000000 0.0 0.0 0.000000 0.0 0.0 0.0 0.0 0.0 0.0 1.000000 0.000000 0.0 0.0 0.0
31
Edit 1: As the comment mentions this only works if Channel_ID
is unique. If it is not (or to be safe) you can also include the index in the pivot
operation. Afterwards restore the index again:
1 Channel_ID Video_Category_Name score_pct
20 UC--bUZc5c9WseZNqGR6KLxA Autos & Vehicles 0.213702
31 UC--bUZc5c9WseZNqGR6KLxA Entertainment 0.786298
42 UC-B1L3oT81XgeeGh6S12qgQ People & Blogs 1.000000
53 UC-N_7HFKrSsYxCSA_kfdRSA People & Blogs 0.137261
64 UC-N_7HFKrSsYxCSA_kfdRSA Pets & Animals 0.862739
7... ... ... ...
8819 UCzsNLZ9GrGXRjt0QmvWFm2Q Entertainment 0.945243
9820 UCzsNLZ9GrGXRjt0QmvWFm2Q Film & Animation 0.002046
10821 UCzsNLZ9GrGXRjt0QmvWFm2Q Music 0.002797
11822 UCzsNLZ9GrGXRjt0QmvWFm2Q News & Politics 0.000433
12823 UCzsNLZ9GrGXRjt0QmvWFm2Q People & Blogs 0.000358
13df.Video_Category_Name.unique()
14array(['Autos & Vehicles', 'Entertainment', 'People & Blogs',
15 'Pets & Animals', 'Howto & Style', 'Education', 'Gaming', 'Music',
16 'Comedy', 'Travel & Events', 'Science & Technology',
17 'Nonprofits & Activism', 'Sports', 'Film & Animation',
18 'News & Politics'], dtype=object)
19 In [3]: iwantthis
20 Out[3]:
21 Channel_ID Autos & Vehicles Entertainment People & Blogs ...
22 0 UC--bUZc5c9WseZNqGR6KLxA 0.213702 0.786298 0 ...
23 1 UC-B1L3oT81XgeeGh6S12qgQ 0 0 1.0000 ...
24df = df.pivot(index='Channel_ID', columns='Video_Category_Name', values='score_pct').fillna(0).reset_index()
25Video_Category_Name Channel_ID Autos & Vehicles Comedy Education Entertainment Film & Animation Gaming Howto & Style Music News & Politics Nonprofits & Activism People & Blogs Pets & Animals Science & Technology Sports Travel & Events
260 UC--bUZc5c9WseZNqGR6KLxA 0.213702 0.0 0.0 0.786298 0.0 0.0 0.0 0.0 0.0 0.0 0.000000 0.000000 0.0 0.0 0.0
271 UC-B1L3oT81XgeeGh6S12qgQ 0.000000 0.0 0.0 0.000000 0.0 0.0 0.0 0.0 0.0 0.0 1.000000 0.000000 0.0 0.0 0.0
282 UC-N_7HFKrSsYxCSA_kfdRSA 0.000000 0.0 0.0 0.000000 0.0 0.0 0.0 0.0 0.0 0.0 0.137261 0.862739 0.0 0.0 0.0
293 UC-T4JheeuNl2DVg-B-v7McA 0.000000 0.0 0.0 0.000000 0.0 0.0 1.0 0.0 0.0 0.0 0.000000 0.000000 0.0 0.0 0.0
304 UC-WG1VP4am6NaUtANEJxRQw 0.000000 0.0 0.0 0.000000 0.0 0.0 0.0 0.0 0.0 0.0 1.000000 0.000000 0.0 0.0 0.0
31df = df.reset_index().pivot(index=['index', 'Channel_ID'], columns='Video_Category_Name', values='score_pct').fillna(0).reset_index(level=1)
32
Edit 2: The Video_Category_Name
in the dataframe is only the label of the columns and should not change anything. However, you can easily remove it with this line:
1 Channel_ID Video_Category_Name score_pct
20 UC--bUZc5c9WseZNqGR6KLxA Autos & Vehicles 0.213702
31 UC--bUZc5c9WseZNqGR6KLxA Entertainment 0.786298
42 UC-B1L3oT81XgeeGh6S12qgQ People & Blogs 1.000000
53 UC-N_7HFKrSsYxCSA_kfdRSA People & Blogs 0.137261
64 UC-N_7HFKrSsYxCSA_kfdRSA Pets & Animals 0.862739
7... ... ... ...
8819 UCzsNLZ9GrGXRjt0QmvWFm2Q Entertainment 0.945243
9820 UCzsNLZ9GrGXRjt0QmvWFm2Q Film & Animation 0.002046
10821 UCzsNLZ9GrGXRjt0QmvWFm2Q Music 0.002797
11822 UCzsNLZ9GrGXRjt0QmvWFm2Q News & Politics 0.000433
12823 UCzsNLZ9GrGXRjt0QmvWFm2Q People & Blogs 0.000358
13df.Video_Category_Name.unique()
14array(['Autos & Vehicles', 'Entertainment', 'People & Blogs',
15 'Pets & Animals', 'Howto & Style', 'Education', 'Gaming', 'Music',
16 'Comedy', 'Travel & Events', 'Science & Technology',
17 'Nonprofits & Activism', 'Sports', 'Film & Animation',
18 'News & Politics'], dtype=object)
19 In [3]: iwantthis
20 Out[3]:
21 Channel_ID Autos & Vehicles Entertainment People & Blogs ...
22 0 UC--bUZc5c9WseZNqGR6KLxA 0.213702 0.786298 0 ...
23 1 UC-B1L3oT81XgeeGh6S12qgQ 0 0 1.0000 ...
24df = df.pivot(index='Channel_ID', columns='Video_Category_Name', values='score_pct').fillna(0).reset_index()
25Video_Category_Name Channel_ID Autos & Vehicles Comedy Education Entertainment Film & Animation Gaming Howto & Style Music News & Politics Nonprofits & Activism People & Blogs Pets & Animals Science & Technology Sports Travel & Events
260 UC--bUZc5c9WseZNqGR6KLxA 0.213702 0.0 0.0 0.786298 0.0 0.0 0.0 0.0 0.0 0.0 0.000000 0.000000 0.0 0.0 0.0
271 UC-B1L3oT81XgeeGh6S12qgQ 0.000000 0.0 0.0 0.000000 0.0 0.0 0.0 0.0 0.0 0.0 1.000000 0.000000 0.0 0.0 0.0
282 UC-N_7HFKrSsYxCSA_kfdRSA 0.000000 0.0 0.0 0.000000 0.0 0.0 0.0 0.0 0.0 0.0 0.137261 0.862739 0.0 0.0 0.0
293 UC-T4JheeuNl2DVg-B-v7McA 0.000000 0.0 0.0 0.000000 0.0 0.0 1.0 0.0 0.0 0.0 0.000000 0.000000 0.0 0.0 0.0
304 UC-WG1VP4am6NaUtANEJxRQw 0.000000 0.0 0.0 0.000000 0.0 0.0 0.0 0.0 0.0 0.0 1.000000 0.000000 0.0 0.0 0.0
31df = df.reset_index().pivot(index=['index', 'Channel_ID'], columns='Video_Category_Name', values='score_pct').fillna(0).reset_index(level=1)
32df = df.rename_axis(None, axis=1)
33
For the solution of Edit 1 you might also want to remove the index name, which can be done with the same operation and a different axis:
1 Channel_ID Video_Category_Name score_pct
20 UC--bUZc5c9WseZNqGR6KLxA Autos & Vehicles 0.213702
31 UC--bUZc5c9WseZNqGR6KLxA Entertainment 0.786298
42 UC-B1L3oT81XgeeGh6S12qgQ People & Blogs 1.000000
53 UC-N_7HFKrSsYxCSA_kfdRSA People & Blogs 0.137261
64 UC-N_7HFKrSsYxCSA_kfdRSA Pets & Animals 0.862739
7... ... ... ...
8819 UCzsNLZ9GrGXRjt0QmvWFm2Q Entertainment 0.945243
9820 UCzsNLZ9GrGXRjt0QmvWFm2Q Film & Animation 0.002046
10821 UCzsNLZ9GrGXRjt0QmvWFm2Q Music 0.002797
11822 UCzsNLZ9GrGXRjt0QmvWFm2Q News & Politics 0.000433
12823 UCzsNLZ9GrGXRjt0QmvWFm2Q People & Blogs 0.000358
13df.Video_Category_Name.unique()
14array(['Autos & Vehicles', 'Entertainment', 'People & Blogs',
15 'Pets & Animals', 'Howto & Style', 'Education', 'Gaming', 'Music',
16 'Comedy', 'Travel & Events', 'Science & Technology',
17 'Nonprofits & Activism', 'Sports', 'Film & Animation',
18 'News & Politics'], dtype=object)
19 In [3]: iwantthis
20 Out[3]:
21 Channel_ID Autos & Vehicles Entertainment People & Blogs ...
22 0 UC--bUZc5c9WseZNqGR6KLxA 0.213702 0.786298 0 ...
23 1 UC-B1L3oT81XgeeGh6S12qgQ 0 0 1.0000 ...
24df = df.pivot(index='Channel_ID', columns='Video_Category_Name', values='score_pct').fillna(0).reset_index()
25Video_Category_Name Channel_ID Autos & Vehicles Comedy Education Entertainment Film & Animation Gaming Howto & Style Music News & Politics Nonprofits & Activism People & Blogs Pets & Animals Science & Technology Sports Travel & Events
260 UC--bUZc5c9WseZNqGR6KLxA 0.213702 0.0 0.0 0.786298 0.0 0.0 0.0 0.0 0.0 0.0 0.000000 0.000000 0.0 0.0 0.0
271 UC-B1L3oT81XgeeGh6S12qgQ 0.000000 0.0 0.0 0.000000 0.0 0.0 0.0 0.0 0.0 0.0 1.000000 0.000000 0.0 0.0 0.0
282 UC-N_7HFKrSsYxCSA_kfdRSA 0.000000 0.0 0.0 0.000000 0.0 0.0 0.0 0.0 0.0 0.0 0.137261 0.862739 0.0 0.0 0.0
293 UC-T4JheeuNl2DVg-B-v7McA 0.000000 0.0 0.0 0.000000 0.0 0.0 1.0 0.0 0.0 0.0 0.000000 0.000000 0.0 0.0 0.0
304 UC-WG1VP4am6NaUtANEJxRQw 0.000000 0.0 0.0 0.000000 0.0 0.0 0.0 0.0 0.0 0.0 1.000000 0.000000 0.0 0.0 0.0
31df = df.reset_index().pivot(index=['index', 'Channel_ID'], columns='Video_Category_Name', values='score_pct').fillna(0).reset_index(level=1)
32df = df.rename_axis(None, axis=1)
33df = df.rename_axis(None, axis=0)
34
QUESTION
Implementing 3 modals triggered by 3 buttons
Asked 2022-Feb-19 at 19:42I have 3 modal buttons. All three buttons have different inputs. But when I press the first button, everything is showing completely fine but when I press the 2nd and 3rd button, it shows the same results as the first button. Please have a look, I am attaching my code below.
Extra: It would be very helpful for me if you can suggest me, how I can put multiple photos stacked in the modal body without losing the shape of the modal. It will show a single photo in the modal body but if someone swap over the picture then the next picture will arrive. Thank you so much.
1// Modal
2// Get DOM Elements
3const modal = document.querySelector('#my-modal');
4const modalBtn = document.querySelectorAll('.button');
5const closeBtn = document.querySelector('.close');
6
7// Events
8modalBtn.forEach(btn => btn.addEventListener('click', openModal));
9closeBtn.addEventListener('click', closeModal);
10window.addEventListener('click', outsideClick);
11
12// Open
13function openModal() {
14 modal.style.display = 'block';
15}
16
17// Close
18function closeModal() {
19 modal.style.display = 'none';
20}
21
22// Close If Outside Click
23function outsideClick(e) {
24 if (e.target == modal) {
25 modal.style.display = 'none';
26 }
27}
1// Modal
2// Get DOM Elements
3const modal = document.querySelector('#my-modal');
4const modalBtn = document.querySelectorAll('.button');
5const closeBtn = document.querySelector('.close');
6
7// Events
8modalBtn.forEach(btn => btn.addEventListener('click', openModal));
9closeBtn.addEventListener('click', closeModal);
10window.addEventListener('click', outsideClick);
11
12// Open
13function openModal() {
14 modal.style.display = 'block';
15}
16
17// Close
18function closeModal() {
19 modal.style.display = 'none';
20}
21
22// Close If Outside Click
23function outsideClick(e) {
24 if (e.target == modal) {
25 modal.style.display = 'none';
26 }
27}/* Modal section styling */
28
29:root {
30 --modal-duration: 1s;
31 --modal-color: crimson;
32 }
33
34 .button {
35 font-family: 'poppins', sans-serif;
36 display: inline-block;
37 background: crimson;
38 color: #fff;
39 font-size: 18px;
40 font-weight: 500;
41 padding: 8px 16px;
42 margin-top: 20px;
43 border-radius: 6px;
44 border: 2px solid crimson;
45 transition: all 0.3s ease;
46 }
47
48 .button:hover {
49 color: crimson;
50 background: none;
51 }
52
53 .modal {
54 display: none;
55 position: fixed;
56 z-index: 99999;
57 left: 0;
58 top: 0;
59 height: 100%;
60 width: 100%;
61 overflow: auto;
62 background-color: rgba(0, 0, 0, 0.5);
63 }
64
65 .modal-content {
66 margin: 50px auto;
67 width: 60%;
68 box-shadow: 0 5px 8px 0 rgba(0, 0, 0, 0.2), 0 7px 20px 0 rgba(0, 0, 0, 0.17);
69 animation-name: modalopen;
70 animation-duration: var(--modal-duration);
71 }
72
73 .modal-header h2,
74 .modal-footer h3 {
75 margin: 0;
76 }
77
78 .modal-header {
79 background: var(--modal-color);
80 text-align: center;
81 padding: 10px;
82 color: #fff;
83 border-top-left-radius: 5px;
84 border-top-right-radius: 5px;
85 }
86
87 .modal-body {
88 padding: 10px 5px 1px 5px;
89 background: #fff;
90 }
91
92 .modal-footer {
93 background: var(--modal-color);
94 padding: 10px;
95 font-size: 15px;
96 font-weight: lighter;
97 color: #fff;
98 text-align: center;
99 border-bottom-left-radius: 5px;
100 border-bottom-right-radius: 5px;
101 }
102
103 .close {
104 color: #ccc;
105 float: right;
106 font-size: 30px;
107 color: #fff;
108 }
109
110 .close:hover,
111 .close:focus {
112 color: #000;
113 text-decoration: none;
114 cursor: pointer;
115 }
116 .responsive {
117 width: 100%;
118 height: auto;
119 }
120 @keyframes modalopen {
121 from {
122 opacity: 0;
123 }
124 to {
125 opacity: 1;
126 }
127 }
1// Modal
2// Get DOM Elements
3const modal = document.querySelector('#my-modal');
4const modalBtn = document.querySelectorAll('.button');
5const closeBtn = document.querySelector('.close');
6
7// Events
8modalBtn.forEach(btn => btn.addEventListener('click', openModal));
9closeBtn.addEventListener('click', closeModal);
10window.addEventListener('click', outsideClick);
11
12// Open
13function openModal() {
14 modal.style.display = 'block';
15}
16
17// Close
18function closeModal() {
19 modal.style.display = 'none';
20}
21
22// Close If Outside Click
23function outsideClick(e) {
24 if (e.target == modal) {
25 modal.style.display = 'none';
26 }
27}/* Modal section styling */
28
29:root {
30 --modal-duration: 1s;
31 --modal-color: crimson;
32 }
33
34 .button {
35 font-family: 'poppins', sans-serif;
36 display: inline-block;
37 background: crimson;
38 color: #fff;
39 font-size: 18px;
40 font-weight: 500;
41 padding: 8px 16px;
42 margin-top: 20px;
43 border-radius: 6px;
44 border: 2px solid crimson;
45 transition: all 0.3s ease;
46 }
47
48 .button:hover {
49 color: crimson;
50 background: none;
51 }
52
53 .modal {
54 display: none;
55 position: fixed;
56 z-index: 99999;
57 left: 0;
58 top: 0;
59 height: 100%;
60 width: 100%;
61 overflow: auto;
62 background-color: rgba(0, 0, 0, 0.5);
63 }
64
65 .modal-content {
66 margin: 50px auto;
67 width: 60%;
68 box-shadow: 0 5px 8px 0 rgba(0, 0, 0, 0.2), 0 7px 20px 0 rgba(0, 0, 0, 0.17);
69 animation-name: modalopen;
70 animation-duration: var(--modal-duration);
71 }
72
73 .modal-header h2,
74 .modal-footer h3 {
75 margin: 0;
76 }
77
78 .modal-header {
79 background: var(--modal-color);
80 text-align: center;
81 padding: 10px;
82 color: #fff;
83 border-top-left-radius: 5px;
84 border-top-right-radius: 5px;
85 }
86
87 .modal-body {
88 padding: 10px 5px 1px 5px;
89 background: #fff;
90 }
91
92 .modal-footer {
93 background: var(--modal-color);
94 padding: 10px;
95 font-size: 15px;
96 font-weight: lighter;
97 color: #fff;
98 text-align: center;
99 border-bottom-left-radius: 5px;
100 border-bottom-right-radius: 5px;
101 }
102
103 .close {
104 color: #ccc;
105 float: right;
106 font-size: 30px;
107 color: #fff;
108 }
109
110 .close:hover,
111 .close:focus {
112 color: #000;
113 text-decoration: none;
114 cursor: pointer;
115 }
116 .responsive {
117 width: 100%;
118 height: auto;
119 }
120 @keyframes modalopen {
121 from {
122 opacity: 0;
123 }
124 to {
125 opacity: 1;
126 }
127 }<!-- Modal Button 1 start -->
128<button id="modal-btn" class="button">Parkit</button>
129<div id="my-modal" class="modal">
130 <div class="modal-content">
131 <div class="modal-header">
132 <span class="close">&times;</span>
133 <h3>Vehicle Parking Application</h3>
134 </div>
135 <div class="modal-body">
136 <img src="https://thefinancialexpress.com.bd/uploads/1575560371.jpg" alt="Vehicle Parking Application" class="responsive">
137 </div>
138 <div class="modal-footer">
139 <p>
140 Footer
141 </p>
142 </div>
143 </div>
144</div>
145<!-- Modal Button 1 end -->
146
147<!-- Modal Button 2 start -->
148<button id="modal-btn2" class="button">IPDC IMS</button>
149<div id="my-modal2" class="modal">
150 <div class="modal-content">
151 <div class="modal-header">
152 <span class="close">&times;</span>
153 <h3>Asset Management System</h3>
154 </div>
155 <div class="modal-body">
156 <img src="#" alt="Asset Management System" class="responsive">
157 </div>
158 <div class="modal-footer">
159 ...
160 </div>
161 </div>
162</div>
163<!-- Modal Button 2 end -->
164
165<!-- Modal Button 3 start -->
166<button id="modal-btn3" class="button">Gaming Website</button>
167<div id="my-modal3" class="modal">
168 <div class="modal-content">
169 <div class="modal-header">
170 <span class="close">&times;</span>
171 <h3>Gaming Website</h3>
172 </div>
173 <div class="modal-body">
174 ...
175 </div>
176 <div class="modal-footer">
177
178 </div>
179 </div>
180</div>
181<!-- Modal Button 3 end -->
ANSWER
Answered 2022-Feb-19 at 19:42This would solve the problem where every button triggering the same modal. You should be getting all modals and all buttons.
1// Modal
2// Get DOM Elements
3const modal = document.querySelector('#my-modal');
4const modalBtn = document.querySelectorAll('.button');
5const closeBtn = document.querySelector('.close');
6
7// Events
8modalBtn.forEach(btn => btn.addEventListener('click', openModal));
9closeBtn.addEventListener('click', closeModal);
10window.addEventListener('click', outsideClick);
11
12// Open
13function openModal() {
14 modal.style.display = 'block';
15}
16
17// Close
18function closeModal() {
19 modal.style.display = 'none';
20}
21
22// Close If Outside Click
23function outsideClick(e) {
24 if (e.target == modal) {
25 modal.style.display = 'none';
26 }
27}/* Modal section styling */
28
29:root {
30 --modal-duration: 1s;
31 --modal-color: crimson;
32 }
33
34 .button {
35 font-family: 'poppins', sans-serif;
36 display: inline-block;
37 background: crimson;
38 color: #fff;
39 font-size: 18px;
40 font-weight: 500;
41 padding: 8px 16px;
42 margin-top: 20px;
43 border-radius: 6px;
44 border: 2px solid crimson;
45 transition: all 0.3s ease;
46 }
47
48 .button:hover {
49 color: crimson;
50 background: none;
51 }
52
53 .modal {
54 display: none;
55 position: fixed;
56 z-index: 99999;
57 left: 0;
58 top: 0;
59 height: 100%;
60 width: 100%;
61 overflow: auto;
62 background-color: rgba(0, 0, 0, 0.5);
63 }
64
65 .modal-content {
66 margin: 50px auto;
67 width: 60%;
68 box-shadow: 0 5px 8px 0 rgba(0, 0, 0, 0.2), 0 7px 20px 0 rgba(0, 0, 0, 0.17);
69 animation-name: modalopen;
70 animation-duration: var(--modal-duration);
71 }
72
73 .modal-header h2,
74 .modal-footer h3 {
75 margin: 0;
76 }
77
78 .modal-header {
79 background: var(--modal-color);
80 text-align: center;
81 padding: 10px;
82 color: #fff;
83 border-top-left-radius: 5px;
84 border-top-right-radius: 5px;
85 }
86
87 .modal-body {
88 padding: 10px 5px 1px 5px;
89 background: #fff;
90 }
91
92 .modal-footer {
93 background: var(--modal-color);
94 padding: 10px;
95 font-size: 15px;
96 font-weight: lighter;
97 color: #fff;
98 text-align: center;
99 border-bottom-left-radius: 5px;
100 border-bottom-right-radius: 5px;
101 }
102
103 .close {
104 color: #ccc;
105 float: right;
106 font-size: 30px;
107 color: #fff;
108 }
109
110 .close:hover,
111 .close:focus {
112 color: #000;
113 text-decoration: none;
114 cursor: pointer;
115 }
116 .responsive {
117 width: 100%;
118 height: auto;
119 }
120 @keyframes modalopen {
121 from {
122 opacity: 0;
123 }
124 to {
125 opacity: 1;
126 }
127 }<!-- Modal Button 1 start -->
128<button id="modal-btn" class="button">Parkit</button>
129<div id="my-modal" class="modal">
130 <div class="modal-content">
131 <div class="modal-header">
132 <span class="close">&times;</span>
133 <h3>Vehicle Parking Application</h3>
134 </div>
135 <div class="modal-body">
136 <img src="https://thefinancialexpress.com.bd/uploads/1575560371.jpg" alt="Vehicle Parking Application" class="responsive">
137 </div>
138 <div class="modal-footer">
139 <p>
140 Footer
141 </p>
142 </div>
143 </div>
144</div>
145<!-- Modal Button 1 end -->
146
147<!-- Modal Button 2 start -->
148<button id="modal-btn2" class="button">IPDC IMS</button>
149<div id="my-modal2" class="modal">
150 <div class="modal-content">
151 <div class="modal-header">
152 <span class="close">&times;</span>
153 <h3>Asset Management System</h3>
154 </div>
155 <div class="modal-body">
156 <img src="#" alt="Asset Management System" class="responsive">
157 </div>
158 <div class="modal-footer">
159 ...
160 </div>
161 </div>
162</div>
163<!-- Modal Button 2 end -->
164
165<!-- Modal Button 3 start -->
166<button id="modal-btn3" class="button">Gaming Website</button>
167<div id="my-modal3" class="modal">
168 <div class="modal-content">
169 <div class="modal-header">
170 <span class="close">&times;</span>
171 <h3>Gaming Website</h3>
172 </div>
173 <div class="modal-body">
174 ...
175 </div>
176 <div class="modal-footer">
177
178 </div>
179 </div>
180</div>
181<!-- Modal Button 3 end -->// Modal
182// Get DOM Elements
183const modals = document.querySelectorAll(".modal");
184const modalBtns = document.querySelectorAll(".button");
185const closeBtns = document.querySelectorAll(".close");
186
187// Events
188modalBtns.forEach((btn, index) =>
189 btn.addEventListener("click", () => openModal(index))
190);
191closeBtns.forEach((btn, index) =>
192 btn.addEventListener("click", () => closeModal(index))
193);
194// for closing when you click outside
195modals.forEach((modal, index) =>
196 modal.addEventListener("click", (e) => {
197 if(e.target === e.currentTarget){
198 closeModal(index);
199 }
200})
201);
202
203// Open
204function openModal(index) {
205 modals[index].style.display = "block";
206}
207
208// Close
209function closeModal(index) {
210 modals[index].style.display = "none";
211}
1// Modal
2// Get DOM Elements
3const modal = document.querySelector('#my-modal');
4const modalBtn = document.querySelectorAll('.button');
5const closeBtn = document.querySelector('.close');
6
7// Events
8modalBtn.forEach(btn => btn.addEventListener('click', openModal));
9closeBtn.addEventListener('click', closeModal);
10window.addEventListener('click', outsideClick);
11
12// Open
13function openModal() {
14 modal.style.display = 'block';
15}
16
17// Close
18function closeModal() {
19 modal.style.display = 'none';
20}
21
22// Close If Outside Click
23function outsideClick(e) {
24 if (e.target == modal) {
25 modal.style.display = 'none';
26 }
27}/* Modal section styling */
28
29:root {
30 --modal-duration: 1s;
31 --modal-color: crimson;
32 }
33
34 .button {
35 font-family: 'poppins', sans-serif;
36 display: inline-block;
37 background: crimson;
38 color: #fff;
39 font-size: 18px;
40 font-weight: 500;
41 padding: 8px 16px;
42 margin-top: 20px;
43 border-radius: 6px;
44 border: 2px solid crimson;
45 transition: all 0.3s ease;
46 }
47
48 .button:hover {
49 color: crimson;
50 background: none;
51 }
52
53 .modal {
54 display: none;
55 position: fixed;
56 z-index: 99999;
57 left: 0;
58 top: 0;
59 height: 100%;
60 width: 100%;
61 overflow: auto;
62 background-color: rgba(0, 0, 0, 0.5);
63 }
64
65 .modal-content {
66 margin: 50px auto;
67 width: 60%;
68 box-shadow: 0 5px 8px 0 rgba(0, 0, 0, 0.2), 0 7px 20px 0 rgba(0, 0, 0, 0.17);
69 animation-name: modalopen;
70 animation-duration: var(--modal-duration);
71 }
72
73 .modal-header h2,
74 .modal-footer h3 {
75 margin: 0;
76 }
77
78 .modal-header {
79 background: var(--modal-color);
80 text-align: center;
81 padding: 10px;
82 color: #fff;
83 border-top-left-radius: 5px;
84 border-top-right-radius: 5px;
85 }
86
87 .modal-body {
88 padding: 10px 5px 1px 5px;
89 background: #fff;
90 }
91
92 .modal-footer {
93 background: var(--modal-color);
94 padding: 10px;
95 font-size: 15px;
96 font-weight: lighter;
97 color: #fff;
98 text-align: center;
99 border-bottom-left-radius: 5px;
100 border-bottom-right-radius: 5px;
101 }
102
103 .close {
104 color: #ccc;
105 float: right;
106 font-size: 30px;
107 color: #fff;
108 }
109
110 .close:hover,
111 .close:focus {
112 color: #000;
113 text-decoration: none;
114 cursor: pointer;
115 }
116 .responsive {
117 width: 100%;
118 height: auto;
119 }
120 @keyframes modalopen {
121 from {
122 opacity: 0;
123 }
124 to {
125 opacity: 1;
126 }
127 }<!-- Modal Button 1 start -->
128<button id="modal-btn" class="button">Parkit</button>
129<div id="my-modal" class="modal">
130 <div class="modal-content">
131 <div class="modal-header">
132 <span class="close">&times;</span>
133 <h3>Vehicle Parking Application</h3>
134 </div>
135 <div class="modal-body">
136 <img src="https://thefinancialexpress.com.bd/uploads/1575560371.jpg" alt="Vehicle Parking Application" class="responsive">
137 </div>
138 <div class="modal-footer">
139 <p>
140 Footer
141 </p>
142 </div>
143 </div>
144</div>
145<!-- Modal Button 1 end -->
146
147<!-- Modal Button 2 start -->
148<button id="modal-btn2" class="button">IPDC IMS</button>
149<div id="my-modal2" class="modal">
150 <div class="modal-content">
151 <div class="modal-header">
152 <span class="close">&times;</span>
153 <h3>Asset Management System</h3>
154 </div>
155 <div class="modal-body">
156 <img src="#" alt="Asset Management System" class="responsive">
157 </div>
158 <div class="modal-footer">
159 ...
160 </div>
161 </div>
162</div>
163<!-- Modal Button 2 end -->
164
165<!-- Modal Button 3 start -->
166<button id="modal-btn3" class="button">Gaming Website</button>
167<div id="my-modal3" class="modal">
168 <div class="modal-content">
169 <div class="modal-header">
170 <span class="close">&times;</span>
171 <h3>Gaming Website</h3>
172 </div>
173 <div class="modal-body">
174 ...
175 </div>
176 <div class="modal-footer">
177
178 </div>
179 </div>
180</div>
181<!-- Modal Button 3 end -->// Modal
182// Get DOM Elements
183const modals = document.querySelectorAll(".modal");
184const modalBtns = document.querySelectorAll(".button");
185const closeBtns = document.querySelectorAll(".close");
186
187// Events
188modalBtns.forEach((btn, index) =>
189 btn.addEventListener("click", () => openModal(index))
190);
191closeBtns.forEach((btn, index) =>
192 btn.addEventListener("click", () => closeModal(index))
193);
194// for closing when you click outside
195modals.forEach((modal, index) =>
196 modal.addEventListener("click", (e) => {
197 if(e.target === e.currentTarget){
198 closeModal(index);
199 }
200})
201);
202
203// Open
204function openModal(index) {
205 modals[index].style.display = "block";
206}
207
208// Close
209function closeModal(index) {
210 modals[index].style.display = "none";
211}/* Modal section styling */
212
213:root {
214 --modal-duration: 1s;
215 --modal-color: crimson;
216 }
217
218 .button {
219 font-family: 'poppins', sans-serif;
220 display: inline-block;
221 background: crimson;
222 color: #fff;
223 font-size: 18px;
224 font-weight: 500;
225 padding: 8px 16px;
226 margin-top: 20px;
227 border-radius: 6px;
228 border: 2px solid crimson;
229 transition: all 0.3s ease;
230 }
231
232 .button:hover {
233 color: crimson;
234 background: none;
235 }
236
237 .modal {
238 display: none;
239 position: fixed;
240 z-index: 99999;
241 left: 0;
242 top: 0;
243 height: 100%;
244 width: 100%;
245 overflow: auto;
246 background-color: rgba(0, 0, 0, 0.5);
247 }
248
249 .modal-content {
250 margin: 50px auto;
251 width: 60%;
252 box-shadow: 0 5px 8px 0 rgba(0, 0, 0, 0.2), 0 7px 20px 0 rgba(0, 0, 0, 0.17);
253 animation-name: modalopen;
254 animation-duration: var(--modal-duration);
255 }
256
257 .modal-header h2,
258 .modal-footer h3 {
259 margin: 0;
260 }
261
262 .modal-header {
263 background: var(--modal-color);
264 text-align: center;
265 padding: 10px;
266 color: #fff;
267 border-top-left-radius: 5px;
268 border-top-right-radius: 5px;
269 }
270
271 .modal-body {
272 padding: 10px 5px 1px 5px;
273 background: #fff;
274 }
275
276 .modal-footer {
277 background: var(--modal-color);
278 padding: 10px;
279 font-size: 15px;
280 font-weight: lighter;
281 color: #fff;
282 text-align: center;
283 border-bottom-left-radius: 5px;
284 border-bottom-right-radius: 5px;
285 }
286
287 .close {
288 color: #ccc;
289 float: right;
290 font-size: 30px;
291 color: #fff;
292 }
293
294 .close:hover,
295 .close:focus {
296 color: #000;
297 text-decoration: none;
298 cursor: pointer;
299 }
300 .responsive {
301 width: 100%;
302 height: auto;
303 }
304 @keyframes modalopen {
305 from {
306 opacity: 0;
307 }
308 to {
309 opacity: 1;
310 }
311 }
1// Modal
2// Get DOM Elements
3const modal = document.querySelector('#my-modal');
4const modalBtn = document.querySelectorAll('.button');
5const closeBtn = document.querySelector('.close');
6
7// Events
8modalBtn.forEach(btn => btn.addEventListener('click', openModal));
9closeBtn.addEventListener('click', closeModal);
10window.addEventListener('click', outsideClick);
11
12// Open
13function openModal() {
14 modal.style.display = 'block';
15}
16
17// Close
18function closeModal() {
19 modal.style.display = 'none';
20}
21
22// Close If Outside Click
23function outsideClick(e) {
24 if (e.target == modal) {
25 modal.style.display = 'none';
26 }
27}/* Modal section styling */
28
29:root {
30 --modal-duration: 1s;
31 --modal-color: crimson;
32 }
33
34 .button {
35 font-family: 'poppins', sans-serif;
36 display: inline-block;
37 background: crimson;
38 color: #fff;
39 font-size: 18px;
40 font-weight: 500;
41 padding: 8px 16px;
42 margin-top: 20px;
43 border-radius: 6px;
44 border: 2px solid crimson;
45 transition: all 0.3s ease;
46 }
47
48 .button:hover {
49 color: crimson;
50 background: none;
51 }
52
53 .modal {
54 display: none;
55 position: fixed;
56 z-index: 99999;
57 left: 0;
58 top: 0;
59 height: 100%;
60 width: 100%;
61 overflow: auto;
62 background-color: rgba(0, 0, 0, 0.5);
63 }
64
65 .modal-content {
66 margin: 50px auto;
67 width: 60%;
68 box-shadow: 0 5px 8px 0 rgba(0, 0, 0, 0.2), 0 7px 20px 0 rgba(0, 0, 0, 0.17);
69 animation-name: modalopen;
70 animation-duration: var(--modal-duration);
71 }
72
73 .modal-header h2,
74 .modal-footer h3 {
75 margin: 0;
76 }
77
78 .modal-header {
79 background: var(--modal-color);
80 text-align: center;
81 padding: 10px;
82 color: #fff;
83 border-top-left-radius: 5px;
84 border-top-right-radius: 5px;
85 }
86
87 .modal-body {
88 padding: 10px 5px 1px 5px;
89 background: #fff;
90 }
91
92 .modal-footer {
93 background: var(--modal-color);
94 padding: 10px;
95 font-size: 15px;
96 font-weight: lighter;
97 color: #fff;
98 text-align: center;
99 border-bottom-left-radius: 5px;
100 border-bottom-right-radius: 5px;
101 }
102
103 .close {
104 color: #ccc;
105 float: right;
106 font-size: 30px;
107 color: #fff;
108 }
109
110 .close:hover,
111 .close:focus {
112 color: #000;
113 text-decoration: none;
114 cursor: pointer;
115 }
116 .responsive {
117 width: 100%;
118 height: auto;
119 }
120 @keyframes modalopen {
121 from {
122 opacity: 0;
123 }
124 to {
125 opacity: 1;
126 }
127 }<!-- Modal Button 1 start -->
128<button id="modal-btn" class="button">Parkit</button>
129<div id="my-modal" class="modal">
130 <div class="modal-content">
131 <div class="modal-header">
132 <span class="close">&times;</span>
133 <h3>Vehicle Parking Application</h3>
134 </div>
135 <div class="modal-body">
136 <img src="https://thefinancialexpress.com.bd/uploads/1575560371.jpg" alt="Vehicle Parking Application" class="responsive">
137 </div>
138 <div class="modal-footer">
139 <p>
140 Footer
141 </p>
142 </div>
143 </div>
144</div>
145<!-- Modal Button 1 end -->
146
147<!-- Modal Button 2 start -->
148<button id="modal-btn2" class="button">IPDC IMS</button>
149<div id="my-modal2" class="modal">
150 <div class="modal-content">
151 <div class="modal-header">
152 <span class="close">&times;</span>
153 <h3>Asset Management System</h3>
154 </div>
155 <div class="modal-body">
156 <img src="#" alt="Asset Management System" class="responsive">
157 </div>
158 <div class="modal-footer">
159 ...
160 </div>
161 </div>
162</div>
163<!-- Modal Button 2 end -->
164
165<!-- Modal Button 3 start -->
166<button id="modal-btn3" class="button">Gaming Website</button>
167<div id="my-modal3" class="modal">
168 <div class="modal-content">
169 <div class="modal-header">
170 <span class="close">&times;</span>
171 <h3>Gaming Website</h3>
172 </div>
173 <div class="modal-body">
174 ...
175 </div>
176 <div class="modal-footer">
177
178 </div>
179 </div>
180</div>
181<!-- Modal Button 3 end -->// Modal
182// Get DOM Elements
183const modals = document.querySelectorAll(".modal");
184const modalBtns = document.querySelectorAll(".button");
185const closeBtns = document.querySelectorAll(".close");
186
187// Events
188modalBtns.forEach((btn, index) =>
189 btn.addEventListener("click", () => openModal(index))
190);
191closeBtns.forEach((btn, index) =>
192 btn.addEventListener("click", () => closeModal(index))
193);
194// for closing when you click outside
195modals.forEach((modal, index) =>
196 modal.addEventListener("click", (e) => {
197 if(e.target === e.currentTarget){
198 closeModal(index);
199 }
200})
201);
202
203// Open
204function openModal(index) {
205 modals[index].style.display = "block";
206}
207
208// Close
209function closeModal(index) {
210 modals[index].style.display = "none";
211}/* Modal section styling */
212
213:root {
214 --modal-duration: 1s;
215 --modal-color: crimson;
216 }
217
218 .button {
219 font-family: 'poppins', sans-serif;
220 display: inline-block;
221 background: crimson;
222 color: #fff;
223 font-size: 18px;
224 font-weight: 500;
225 padding: 8px 16px;
226 margin-top: 20px;
227 border-radius: 6px;
228 border: 2px solid crimson;
229 transition: all 0.3s ease;
230 }
231
232 .button:hover {
233 color: crimson;
234 background: none;
235 }
236
237 .modal {
238 display: none;
239 position: fixed;
240 z-index: 99999;
241 left: 0;
242 top: 0;
243 height: 100%;
244 width: 100%;
245 overflow: auto;
246 background-color: rgba(0, 0, 0, 0.5);
247 }
248
249 .modal-content {
250 margin: 50px auto;
251 width: 60%;
252 box-shadow: 0 5px 8px 0 rgba(0, 0, 0, 0.2), 0 7px 20px 0 rgba(0, 0, 0, 0.17);
253 animation-name: modalopen;
254 animation-duration: var(--modal-duration);
255 }
256
257 .modal-header h2,
258 .modal-footer h3 {
259 margin: 0;
260 }
261
262 .modal-header {
263 background: var(--modal-color);
264 text-align: center;
265 padding: 10px;
266 color: #fff;
267 border-top-left-radius: 5px;
268 border-top-right-radius: 5px;
269 }
270
271 .modal-body {
272 padding: 10px 5px 1px 5px;
273 background: #fff;
274 }
275
276 .modal-footer {
277 background: var(--modal-color);
278 padding: 10px;
279 font-size: 15px;
280 font-weight: lighter;
281 color: #fff;
282 text-align: center;
283 border-bottom-left-radius: 5px;
284 border-bottom-right-radius: 5px;
285 }
286
287 .close {
288 color: #ccc;
289 float: right;
290 font-size: 30px;
291 color: #fff;
292 }
293
294 .close:hover,
295 .close:focus {
296 color: #000;
297 text-decoration: none;
298 cursor: pointer;
299 }
300 .responsive {
301 width: 100%;
302 height: auto;
303 }
304 @keyframes modalopen {
305 from {
306 opacity: 0;
307 }
308 to {
309 opacity: 1;
310 }
311 }<!-- Modal Button 1 start -->
312<button id="modal-btn" class="button">Parkit</button>
313<div id="my-modal" class="modal">
314 <div class="modal-content">
315 <div class="modal-header">
316 <span class="close">&times;</span>
317 <h3>Vehicle Parking Application</h3>
318 </div>
319 <div class="modal-body">
320 <img src="https://thefinancialexpress.com.bd/uploads/1575560371.jpg" alt="Vehicle Parking Application" class="responsive">
321 </div>
322 <div class="modal-footer">
323 <p>
324 Footer
325 </p>
326 </div>
327 </div>
328</div>
329<!-- Modal Button 1 end -->
330
331<!-- Modal Button 2 start -->
332<button id="modal-btn2" class="button">IPDC IMS</button>
333<div id="my-modal2" class="modal">
334 <div class="modal-content">
335 <div class="modal-header">
336 <span class="close">&times;</span>
337 <h3>Asset Management System</h3>
338 </div>
339 <div class="modal-body">
340 <img src="#" alt="Asset Management System" class="responsive">
341 </div>
342 <div class="modal-footer">
343 ...
344 </div>
345 </div>
346</div>
347<!-- Modal Button 2 end -->
348
349<!-- Modal Button 3 start -->
350<button id="modal-btn3" class="button">Gaming Website</button>
351<div id="my-modal3" class="modal">
352 <div class="modal-content">
353 <div class="modal-header">
354 <span class="close">&times;</span>
355 <h3>Gaming Website</h3>
356 </div>
357 <div class="modal-body">
358 ...
359 </div>
360 <div class="modal-footer">
361
362 </div>
363 </div>
364</div>
365<!-- Modal Button 3 end -->
For the extra part where you want a slider inside your modals, I would suggest you to look at swper.js, a JavaScript library that will allow you to set it up easily.
Community Discussions contain sources that include Stack Exchange Network