File size: 8,522 Bytes
ceac54d
 
5b483cc
ceac54d
8353426
ceac54d
a0cf5f2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ceac54d
 
a0cf5f2
ceac54d
 
 
 
 
 
 
5b483cc
ceac54d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5b483cc
 
ceac54d
 
 
b54d821
5b483cc
b54d821
 
5b483cc
 
ceac54d
5b483cc
b54d821
5b483cc
 
 
 
 
 
8353426
 
 
 
 
 
a0cf5f2
 
 
 
 
8353426
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18e980a
 
8353426
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# Import necessary libraries
import pandas as pd
import streamlit as st
import matplotlib.pyplot as plt
import pydeck as pdk
states = {
    'Alabama': {'region': 'South', 'population': 4903185, 'area': 135767, 'lat': 32.806671, 'lon': -86.791130},
    'Alaska': {'region': 'West', 'population': 731545, 'area': 1723337, 'lat': 61.370716, 'lon': -152.404419},
    'Arizona': {'region': 'West', 'population': 7278717, 'area': 295234, 'lat': 33.729759, 'lon': -111.431221},
    'Arkansas': {'region': 'South', 'population': 3017804, 'area': 137732, 'lat': 34.969704, 'lon': -92.373123},
    'California': {'region': 'West', 'population': 39538223, 'area': 423967, 'lat': 36.116203, 'lon': -119.681567},
    'Colorado': {'region': 'West', 'population': 5773714, 'area': 269601, 'lat': 39.059811, 'lon': -105.311104},
    'Connecticut': {'region': 'Northeast', 'population': 3605944, 'area': 14357, 'lat': 41.597782, 'lon': -72.755371},
    'Delaware': {'region': 'South', 'population': 989948, 'area': 6446, 'lat': 39.318523, 'lon': -75.507141},
    'Florida': {'region': 'South', 'population': 21538187, 'area': 170312, 'lat': 27.766279, 'lon': -81.686783},
    'Georgia': {'region': 'South', 'population': 10711908, 'area': 153910, 'lat': 33.040619, 'lon': -83.643074},
    'Hawaii': {'region': 'West', 'population': 1415872, 'area': 28314, 'lat': 21.094318, 'lon': -157.498337},
    'Idaho': {'region': 'West', 'population': 1826156, 'area': 216443, 'lat': 44.240459, 'lon': -114.478828},
    'Illinois': {'region': 'Midwest', 'population': 12671821, 'area': 149995, 'lat': 40.349457, 'lon': -88.986137},
    'Indiana': {'region': 'Midwest', 'population': 6732219, 'area': 94326, 'lat': 39.849426, 'lon': -86.258284},
    'Iowa': {'region': 'Midwest', 'population': 3155070, 'area': 145746, 'lat': 42.011539, 'lon': -93.210526},
    'Kansas': {'region': 'Midwest', 'population': 2913314, 'area': 213099, 'lat': 38.526600, 'lon': -96.726486},
    'Kentucky': {'region': 'South', 'population': 4467673, 'area': 104656, 'lat': 37.668140, 'lon': -84.670067},
    'Louisiana': {'region': 'South', 'population': 4648794, 'area': 135659, 'lat': 31.169546, 'lon': -91.867805},
    'Maine': {'region': 'Northeast', 'population': 1362359, 'area': 91634, 'lat': 44.693947, 'lon': -69.381927},
    'Maryland': {'region': 'South', 'population': 6177224, 'area': 32131, 'lat': 39.063946, 'lon': -76.802101},
    'Massachusetts': {'region': 'Northeast', 'population': 7029917, 'area': 27336, 'lat': 42.230171, 'lon': -71.530106},
    'Michigan': {'region': 'Midwest', 'population': 10077331, 'area': 250487, 'lat': 43.326618, 'lon': -84.536095},
    'Minnesota': {'region': 'Midwest', 'population': 5706494, 'area': 225163, 'lat': 45.694454, 'lon': -93.900192},
    'Mississippi': {'region': 'South', 'population': 2989260, 'area': 125438, 'lat': 32.741646, 'lon': -89.678697},
    'Missouri': {'region': 'Midwest', 'population': 6169270, 'area': 180540, 'lat': 38.456085, 'lon': -92.288368},
    'Montana': {'region': 'West', 'population': 1084225, 'area': 380831, 'lat': 46.921925, 'lon': -110.454353},
    'Nebraska': {'region': 'Midwest', 'population': 1952570, 'area': 200330, 'lat': 41.125370, 'lon': -98.268082},
    'Nevada': {'region': 'West', 'population': 3139658, 'area': 286380, 'lat': 38.313515, 'lon': -117.055374},
    'New Hampshire': {'region': 'Northeast', 'population': 1371246, 'area': 24214, 'lat': 43.452492, 'lon': -71.563896},
    'New Jersey': {'region': 'Northeast', 'population': 9288994, 'area': 22591, 'lat': 40.298904, 'lon': -74.521011},
    'New Mexico': {'region': 'West', 'population': 2117522, 'area': 314917, 'lat': 34.840515, 'lon': -106.248482},
    'New York': {'region': 'Northeast', 'population': 20215751, 'area': 141297, 'lat': 42.165726, 'lon': -74.948051},
    'North Carolina': {'region': 'South', 'population': 10488084, 'area': 139391, 'lat': 35.630066, 'lon': -79.806419},
    'North Dakota': {'region': 'Midwest', 'population': 762062, 'area': 183108, 'lat': 47.528912, 'lon': -99.784012},
    'Ohio': {'region': 'Midwest', 'population': 11689100, 'area': 116098, 'lat': 40.388783, 'lon': -82.764915},
    'Oklahoma': {'region': 'South', 'population': 3953823, 'area': 181037, 'lat': 35.565342, 'lon': -96.928917},
    'Oregon': {'region': 'West', 'population': 4217737, 'area': 254799, 'lat': 44.572021, 'lon': -122.070938},
    'Pennsylvania': {'region': 'Northeast', 'population': 12801989, 'area': 119280, 'lat': 40.590752, 'lon': -77.209755},
    'Rhode Island': {'region': 'Northeast', 'population': 1097379, 'area': 4001, 'lat': 41.680893, 'lon': -71.511780},
    'South Carolina': {'region': 'South', 'population': 5148714, 'area': 82933, 'lat': 33.856892, 'lon': -80.945007},
    'South Dakota': {'region': 'Midwest', 'population': 884659, 'area': 199729, 'lat': 44.299782, 'lon': -99.438828},
    'Tennessee': {'region': 'South', 'population': 6833174, 'area': 109153, 'lat': 35.747845, 'lon': -86.692345},
    'Texas': {'region': 'South', 'population': 29145505, 'area': 695662, 'lat': 31.054487, 'lon': -97.563461},
    'Utah': {'region': 'West', 'population': 3271616, 'area': 219882, 'lat': 40.150032, 'lon': -111.862434},
    'Vermont': {'region': 'Northeast', 'population': 623989, 'area': 24906, 'lat': 44.045876, 'lon': -72.710686},
    'Virginia': {'region': 'South', 'population': 8631393, 'area': 110787, 'lat': 37.769337, 'lon': -78.170400},
    'Washington': {'region': 'West', 'population': 7693612, 'area': 184661, 'lat': 47.400902, 'lon': -121.490494},
    'West Virginia': {'region': 'South', 'population': 1792147, 'area': 62756, 'lat': 38.491000, 'lon': -80.954570},
    'Wisconsin': {'region': 'Midwest', 'population': 5851754, 'area': 169635, 'lat': 44.268543, 'lon': -89.616508},
    'Wyoming': {'region': 'West', 'population': 578759, 'area': 253335, 'lat': 42.755966, 'lon': -107.302490}
}


# Create a function to calculate population density
def calculate_density(population, area):
    return population / area

# Create a function to plot the graph
def plot_graph(df, region):
    plt.figure(figsize=(10, 5))
    plt.bar(df['State'], df['Population Density'])
    plt.title(f'Population Density of States in {region} Region')
    plt.xlabel('State')
    plt.ylabel('Population Density')
    plt.xticks(rotation=90)
    plt.show()

# Group states by region and calculate the total population and area for each region
regions = {}
for state, data in states.items():
    region = data['region']
    population = data['population']
    area = data['area']
    if region not in regions:
        regions[region] = {'population': population, 'area': area, 'states': []}
    else:
        regions[region]['population'] += population
        regions[region]['area'] += area
    regions[region]['states'].append(state)

# Calculate the population density for each state in each region and create dataframes
dataframes = []
for region, data in regions.items():
    population = data['population']
    area = data['area']
    states_in_region = data['states']
    densities = []
    for state in states_in_region:
        state_data = states[state]
        state_population = state_data['population']
        state_area = state_data['area']
        state_density = calculate_density(state_population, state_area)
        densities.append(state_density)
    df = pd.DataFrame({'State': states_in_region, 'Population Density': densities})
    dataframes.append(df)

    plot_graph(df, region)

# Use Streamlit to display dataframes
for df in dataframes:
    st.write(df)




# Add lat and lon to your states data
#states = {
#    'Alabama': {'region': 'South', 'population': 4903185, 'area': 135767, 'lat': 32.806671, 'lon': -86.791130},
#    'Alaska': {'region': 'West', 'population': 731545, 'area': 1723337, 'lat': 61.370716, 'lon': -152.404419},
#    # Continue for all states...
#}

# Create dataframe from states data
df = pd.DataFrame.from_dict(states, orient='index').reset_index()
df.columns = ['State', 'Region', 'Population', 'Area', 'Latitude', 'Longitude']

# Define initial viewport for the deckgl map
view_state = pdk.ViewState(
    longitude=-97.6,
    latitude=38.5,
    zoom=3,
    pitch=50,
)

# Define deckgl layer
layer = pdk.Layer(
    "ScatterplotLayer",
    data=df,
    get_position='[Longitude, Latitude]',
    get_radius='Area',
    get_fill_color='[190, 30, 0, 140]',
    pickable=True,
    auto_highlight=True,
)

# Render the deckgl map in the Streamlit app
st.pydeck_chart(pdk.Deck(layers=[layer], initial_view_state=view_state))