Php 数学-动态图表,保持约束比例
我正在创建一个非常简单的动态条形图(CSS/PHP),其中基本上我需要显示的是用户联系人的总数,其中每个条形图的宽度是px中联系人的数量(每个联系人=1个像素)非常简单不Php 数学-动态图表,保持约束比例,php,css,dynamic,charts,Php,Css,Dynamic,Charts,我正在创建一个非常简单的动态条形图(CSS/PHP),其中基本上我需要显示的是用户联系人的总数,其中每个条形图的宽度是px中联系人的数量(每个联系人=1个像素)非常简单不 _______.____________________600px | | | | mario | ===== (54) px | | julie | ========= (65) px | | john | === (40) px
_______.____________________600px
| | |
| mario | ===== (54) px |
| julie | ========= (65) px |
| john | === (40) px |
| mary | ============= (70) px |
|_______|________________________|
0% 30% 50% 80% 100%
现在,我的问题是图形容器的宽度应该是固定的,比如说600px,那么,如果其中一个有600多个联系人,会发生什么呢?是的,我知道,它搞砸了
那么,如何转换成百分比,使每个总比例都相应地变化,并且永远不会到达图表的末尾
谢谢你的事先通知。类似于
当前宽度=当前值*(最大宽度/最大值)
其中,最大宽度=600px
请注意,这只是伪代码。我不能写下任何具体的东西,因为你的问题没有提供任何细节。类似于
当前宽度=当前值*(最大宽度/最大值)
其中,最大宽度=600px
请注意,这只是伪代码。我不能写下任何具体的内容,因为你的问题没有提供任何细节。将你的所有值(54+65+40+70=229)相加,计算每个值的百分比(54/229=23.58%),然后将该百分比应用于600px(600*.2358=141.48)。然后,您可以将该值设置为条形图的宽度(因此第一个条形图将为141px)
在代码中,它可能看起来像这样(尽管您可能会在循环中计算这些值):
将所有值相加(54+65+40+70=229),计算每个值的百分比(54/229=23.58%),然后将该百分比应用于600px(600*.2358=141.48)。然后,您可以将该值设置为条形图的宽度(因此第一个条形图将为141px)
在代码中,它可能看起来像这样(尽管您可能会在循环中计算这些值):
如果条的可用宽度是
totalWidth
,您可以这样做(在C伪代码中,我不知道PHP):
int-maxContacts=0;
for(int i=0;imaxContacts)
maxContacts=用户[i].numberOfContacts;
}
//现在您有了最大数量的联系人
for(int i=0;i
如果条的可用宽度是totalWidth
,您可以这样做(在C伪代码中,我不知道PHP):
int-maxContacts=0;
for(int i=0;imaxContacts)
maxContacts=用户[i].numberOfContacts;
}
//现在您有了最大数量的联系人
for(int i=0;i
hi,我还有一个小问题,如果我想在图表下方添加一个经典的视觉百分比,比如0%-10%-20%-…,那么公式是什么100%始终基于600?谢谢你,伙计<代码>$bar1/$total将给出百分比作为分数(例如0.754),以获得类似于74%的值,将其乘以100并取整。比如round(($bar1/$total)*100)。“%”
hi,我还有一个小问题,如果我想在图表下方添加一个经典的视觉百分比,比如0%-10%-20%-…,那么公式是什么100%始终基于600?谢谢你,伙计<代码>$bar1/$total将给出百分比作为分数(例如0.754),以获得类似于74%的值,将其乘以100并取整。比如round(($bar1/$total)*100)。“%”
$total = 229;
$bar1 = 54;
$bar1Length = round(600 * ($bar1/$total)); // 141
int maxContacts = 0;
for (int i = 0; i < numberOfUsers; i++)
{
if (users[i].numberOfContacts > maxContacts)
maxContacts = users[i].numberOfContacts;
}
// now you have the max number of contacts
for (int i = 0; i < numberOfUsers; i++)
{
widthPercent = users[i].numberOfContacts / maxContacts; // this is the percentage
display_width_for_this_user = totalWidth * widthPercent; // gives the relative width
}