Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数学-动态图表,保持约束比例_Php_Css_Dynamic_Charts - Fatal编程技术网

Php 数学-动态图表,保持约束比例

Php 数学-动态图表,保持约束比例,php,css,dynamic,charts,Php,Css,Dynamic,Charts,我正在创建一个非常简单的动态条形图(CSS/PHP),其中基本上我需要显示的是用户联系人的总数,其中每个条形图的宽度是px中联系人的数量(每个联系人=1个像素)非常简单不 _______.____________________600px | | | | mario | ===== (54) px | | julie | ========= (65) px | | john | === (40) px

我正在创建一个非常简单的动态条形图(CSS/PHP),其中基本上我需要显示的是用户联系人的总数,其中每个条形图的宽度是px中联系人的数量(每个联系人=1个像素)非常简单不

 _______.____________________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
}